为了账号安全,请及时绑定邮箱和手机立即绑定

在一堆行上使用 lstrip 时,只有以 'r' 开头的那些会受到影响,而 'r' 会被删除

在一堆行上使用 lstrip 时,只有以 'r' 开头的那些会受到影响,而 'r' 会被删除

慕慕森 2022-04-24 18:50:15
我有一个包含一些电子邮件的文本文件。所有这些都开始如下:From: stephen.marquard@uct.ac.zaFrom: louis@media.berkeley.eduFrom: zqian@umich.eduFrom: rjlowe@iupui.eduFrom: zqian@umich.eduFrom: rjlowe@iupui.eduFrom: cwen@iupui.eduFrom: cwen@iupui.eduFrom: gsilver@umich.eduFrom: gsilver@umich.eduFrom: zqian@umich.eduFrom: gsilver@umich.eduFrom: wagnermr@iupui.eduFrom: zqian@umich.eduFrom: antranig@caret.cam.ac.ukFrom: gopal.ramasammycook@gmail.comFrom: david.horwitz@uct.ac.zaFrom: david.horwitz@uct.ac.zaFrom: david.horwitz@uct.ac.zaFrom: david.horwitz@uct.ac.zaFrom: stephen.marquard@uct.ac.zaFrom: louis@media.berkeley.eduFrom: louis@media.berkeley.eduFrom: ray@media.berkeley.eduFrom: cwen@iupui.eduFrom: cwen@iupui.eduFrom: cwen@iupui.edu我的问题是要获得唯一的电子邮件 ID,所以我尝试-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))输出-stephen.marquard@uct.ac.zalouis@media.berkeley.eduzqian@umich.edurjlowe@iupui.educwen@iupui.edugsilver@umich.eduwagnermr@iupui.eduantranig@caret.cam.ac.ukgopal.ramasammycook@gmail.comdavid.horwitz@uct.ac.zaray@media.berkeley.edu唯一联系人总数= 11这是正确的答案但是-当我在 lstrip("From: ") 中使用了一个额外的空间时,因为实际的电子邮件在 "From:" 之后开始,这就是我得到的-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))输出-stephen.marquard@uct.ac.zalouis@media.berkeley.eduzqian@umich.edujlowe@iupui.educwen@iupui.edugsilver@umich.edu   wagnermr@iupui.eduantranig@caret.cam.ac.ukgopal.ramasammycook@gmail.comdavid.horwitz@uct.ac.zaay@media.berkeley.edu唯一联系人总数= 11所以我们看到从 r 开始的电子邮件受到影响,因为它们的第一个字母从输出中消失,而其他的则根本不受影响。请帮助我理解为什么会这样。谢谢
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

让我们从查看以下文档开始lstrip:


海峡 lstrip([字符])


返回删除了前导字符的字符串的副本。chars 参数是一个字符串,指定要删除的字符集。


这意味着您的代码的以下部分:


line.lstrip("From: ")

从左边开始删除所有出现的F, r, o,和空格m,:直到找到另一个字符。一些例子:


>>> "From: rrabc@example.com".lstrip("From: ")

'abc@example.com'

>>> "From: morF@example.com".lstrip("From: ")

'@example.com'

>>> "  mmmrrroooFFF: x@example.com".lstrip("From: ")

'x@example.com'


查看完整回答
反对 回复 2022-04-24
?
交互式爱情

TA贡献1712条经验 获得超3个赞

使用str.split()amd 然后访问第一个元素。您还可以使用 aset来获取所有唯一的电子邮件。


前任:


emails = set()

with open("mbox-short.txt") as fhand:

    for line in fhand:

        if line.startswith("From:"):

            emails.add(line.strip().split()[1])


print(emails)

print("\nTotal Unique Contacts=",len(emails))


查看完整回答
反对 回复 2022-04-24
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

您也许可以re用来获取这些邮件:



import re


with open("mbox-short.txt", 'r') as f:

    emails= list(set(re.findall(r'[\w\.]+@[\w\.]+', f.read())))


查看完整回答
反对 回复 2022-04-24
  • 3 回答
  • 0 关注
  • 435 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信