.split() 不会拆分一行中的所有单词
.split() does not split all the words in a line
这是练习:
“编写一个程序,将每封邮件消息分类
提交是在一周中的哪一天完成的。要做到这一点寻找线
以“From”开头,然后寻找第三个单词并保留 运行
计算一周中的每一天。在程序结束时打印
出字典的内容(顺序无关紧要)。
样品线:
从 stephen.marquard@uct.ac.za 星期六 09:14:16 2008"
我需要将这些类型的行从我的文件中拆分出来,但在输出中只显示零和第一个位置(发件人和电子邮件地址)而不是其他单词。输出错误是:“列表索引超出范围”。
这是我的代码:
file1= open('short.txt')
counts= dict()
for line in file1:
line = line.rstrip()
if not line.startswith('From: '): continue
splited = line.split()
print(splited)
day= splited[2]
counts[day]= counts.get(day,0)+1
print('Count of days:',counts)
请熟悉邮箱文件格式:https://en.wikipedia.org/wiki/Mbox,您的输入文件可能是它的一些变体。
您要解析的“发件人”行包含 "From "
且没有分号,并且它位于已保存邮件的开头。
"From: "
行(带分号)是消息 headers 的一部分并且具有不同的语法 - 它包含地址,而不是日期。 headers 通过空白链接与消息 body 分开。您应该转到空白行的下一条消息。
您正在搜索以 From:
开头的行,而您想要的行以 From
开头,我认为下面的代码应该适合您:
counts = {}
with open('short.txt') as file1:
for line in file1:
line = line.strip()
if line.startswith('From '):
day = line.split()[2]
counts[day] = counts.get(day ,0) + 1
print (counts)
输出:
{'Sat': 1, 'Fri': 20, 'Thu': 6}
这是练习: “编写一个程序,将每封邮件消息分类 提交是在一周中的哪一天完成的。要做到这一点寻找线 以“From”开头,然后寻找第三个单词并保留 运行 计算一周中的每一天。在程序结束时打印 出字典的内容(顺序无关紧要)。 样品线: 从 stephen.marquard@uct.ac.za 星期六 09:14:16 2008" 我需要将这些类型的行从我的文件中拆分出来,但在输出中只显示零和第一个位置(发件人和电子邮件地址)而不是其他单词。输出错误是:“列表索引超出范围”。 这是我的代码:
file1= open('short.txt')
counts= dict()
for line in file1:
line = line.rstrip()
if not line.startswith('From: '): continue
splited = line.split()
print(splited)
day= splited[2]
counts[day]= counts.get(day,0)+1
print('Count of days:',counts)
请熟悉邮箱文件格式:https://en.wikipedia.org/wiki/Mbox,您的输入文件可能是它的一些变体。
您要解析的“发件人”行包含 "From "
且没有分号,并且它位于已保存邮件的开头。
"From: "
行(带分号)是消息 headers 的一部分并且具有不同的语法 - 它包含地址,而不是日期。 headers 通过空白链接与消息 body 分开。您应该转到空白行的下一条消息。
您正在搜索以 From:
开头的行,而您想要的行以 From
开头,我认为下面的代码应该适合您:
counts = {}
with open('short.txt') as file1:
for line in file1:
line = line.strip()
if line.startswith('From '):
day = line.split()[2]
counts[day] = counts.get(day ,0) + 1
print (counts)
输出:
{'Sat': 1, 'Fri': 20, 'Thu': 6}