Ao usar lstrip em um monte de linhas, apenas as que começam com 'r' são afetadas e aquele 'r' está sendo removido mantendo o mesmo

Varishu

Eu tenho um arquivo de texto que contém alguns e-mails. Tudo isso começa da seguinte forma:

From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]
From: [email protected]

Meu problema era obter IDs de e-mail exclusivos, então tentei

fhand = open("mbox-short.txt")  
emails=[]
for line in fhand:
    if line.startswith("From:"):
        l=line.lstrip("From:").rstrip()
        emails.append(l) 
unique = []
for email in emails:
    if email not in unique:
        unique.append(email)
        print(email)
print("\nTotal Unique Contacts=",len(unique))

Saída-

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

Total de contatos únicos = 11

qual é a resposta correta MAS-

quando usei um espaço extra em lstrip ("De:") porque o e-mail real começa depois de "De:", é isso que eu obtive-

fhand = open("mbox-short.txt")  
emails=[]
for line in fhand:
    if line.startswith("From:"):
        l=line.lstrip("From: ").rstrip()
        emails.append(l) 
unique = []
for email in emails:
    if email not in unique:
        unique.append(email)
        print(email)
print("\nTotal Unique Contacts=",len(unique))

Saída-

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]   
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

Total de contatos únicos = 11

Portanto, vemos que os e-mails que começam com r são afetados, pois a primeira letra desaparece da saída, enquanto os outros não são afetados de forma alguma. Por favor me ajude a entender por que isso está acontecendo. Obrigado

ikkuh

Vamos começar examinando a documentação de lstrip:

str. lstrip ([chars])

Retorne uma cópia da string com os caracteres iniciais removidos. O argumento chars é uma string que especifica o conjunto de caracteres a ser removido.

Isso significa a seguinte parte do seu código:

line.lstrip("From: ")

remove todas as ocorrências F, r, o, m, :e espaços a partir da esquerda até encontrar outro personagem. Alguns exemplos:

>>> "From: [email protected]".lstrip("From: ")
'[email protected]'
>>> "From: [email protected]".lstrip("From: ")
'@example.com'
>>> "  mmmrrroooFFF: [email protected]".lstrip("From: ")
'[email protected]'

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

TOP lista

quentelabel

Arquivo