How to delete letters automatically with imaplib?

Ben Finney ben+python at benfinney.id.au
Wed Aug 6 05:14:34 EDT 2014


elearn <elearn2014 at gmail.com> writes:

> status,  data=  con.search(None,  "ALL")
> print(len(data[0].split()))
> 48
> typ,  data=  con.search(None,  'Body',  '"xxx at gmail.com"')
> >>>  data
> [b'1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
>  32 33 34 35 36 37 44']
>
> len(data[0].split())
> 36
>
> How can i delete 48-36=12 letters?

Set operations are designed for this::

    # Construct a set of all message numbers.
    status, data = con.search(None, "ALL")
    ids_of_all_messages = set(data[0].split())

    # Construct a set of messages mentioning the address.
    status, data = con.search(None, 'Body', '"xxx at gmail.com"')
    ids_of_messages_containing_address = set(data[0].split())

    # Get the messages to delete.
    ids_of_messages_to_delete = (
            ids_of_all_messages - ids_of_messages_containing_address)

-- 
 \     “Too many pieces of music finish too long after the end.” —Igor |
  `\                                                       Stravinskey |
_o__)                                                                  |
Ben Finney




More information about the Python-list mailing list