[Tutor] adding users to tweets on a list
Chris Down
chris at chrisdown.name
Tue Aug 6 15:51:09 CEST 2013
On 2013-08-06 14:40, Saad Javed wrote:
> It will add max no. of users to one tweet until limit is reached. I want
> all users added to the tweet. E.g. if 4 users can be added to the tweet
> before reaching the limit, return three tweets...first two with 4 users
> attached and the last one with three.
Ah, I see. Sorry, I misread your requirements. Something like this should work.
#!/usr/bin/env python
MAX_LENGTH = 140
class TweetTooLongError(Exception):
"""
Raised when a user would be too long to add to the tweet, even alone.
"""
pass
def generate_tweets(message, users):
"""
Generate tweets based around a message, with users
appended to each tweet.
:param message: the base message
:param users: a group of users to append
:returns: tweets based around the message to the users
"""
add = ""
longest_in_list = " @" + max(users, key=len)
if len(longest_in_list) + len(message) > MAX_LENGTH:
raise TweetTooLongError(
"At least one user would make the tweet too long."
)
while users:
new_message = message
while len(new_message) + len(add) <= MAX_LENGTH:
new_message += add
if not users:
break
add = " @" + users.pop(0)
yield new_message
if __name__ == "__main__":
users = [
"saad", "asad", "sherry", "danny", "ali", "hasan", "adil",
"yousaf", "maria", "bilal", "owais",
]
message = raw_input("Enter string: ")
print("\n".join(generate_tweets(message, users)))
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/tutor/attachments/20130806/7b23b47c/attachment.pgp>
More information about the Tutor
mailing list