编辑字符串,Python

2024-05-14 11:14:59 发布

您现在位置:Python中文网/ 问答频道 /正文

免责声明:对python来说非常新鲜。我有一个作业,要求我在去掉标点符号并将文件中所有单词小写后,计算并打印文件中每个单词的频率(连同单词一起)。现在,我有以下输入组合来处理文件中的每一行:

import string

words = "Dave, Laura, Maddy, Dave, Laura, Maddy, Dave, Laura, Dave"
translation = str.maketrans("","", string.punctuation)
new = words.translate(translation)
lower = new.lower()

然而,这对我来说似乎很粗糙,我觉得我可以用更少的函数调用/更少的代码来完成我的任务。有人对我怎么做有什么建议吗?在


Tags: 文件声明newstring作业单词translationlower
2条回答
words = "Dave, Laura, Maddy, Dave, Laura, Maddy, Dave, Laura, Dave"
words_lower = ' '.join([word.lower() for word in words.split(',')])
print (words_lower)


dave  laura  maddy  dave  laura  maddy  dave  laura  dave

如果你想计算每个单词的频率,你可以试试这个:

>>> from collections import Counter
>>> words = "Dave, Laura, Maddy, Dave, Laura, Maddy, Dave, Laura, Dave"
>>> Counter([word.lower() for word in words.split(', ')])
Counter({'dave': 4, 'laura': 3, 'maddy': 2})

^{}的文档


第一个答案的简短备选方案:

^{pr2}$

如果你想去掉标点符号(多于“,”):

>>> import re
>>> words = "Dave! Laura: Maddy; Dave, Laura? Maddy, Dave, Laura, Dave."
>>> re.sub(r'[!:;,?.]', '', words).lower()
'dave laura maddy dave laura maddy dave laura dave'

相关问题 更多 >

    热门问题