[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