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)))
pgpCWLSHd9g2t.pgp
Description: PGP signature
_______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
