我开始学习 Python,我正在尝试编写一个程序来导入一个文本文件,计算总字数,计算特定段落中的字数(由每个人说) participant, described by 'P1', 'P2' etc.), 从我的字数统计中排除这些词(即 'P1' 等),并单独打印段落。
感谢@James Hurford 我得到了这段代码:
words = None
with open('data.txt') as f:
words = f.read().split()
total_words = len(words)
print 'Total words:', total_words
in_para = False
para_type = None
paragraph = list()
for word in words:
if ('P1' in word or
'P2' in word or
'P3' in word ):
if in_para == False:
in_para = True
para_type = word
else:
print 'Words in paragraph', para_type, ':', len(paragraph)
print ' '.join(paragraph)
del paragraph[:]
para_type = word
else:
paragraph.append(word)
else:
if in_para == True:
print 'Words in last paragraph', para_type, ':', len(paragraph)
print ' '.join(paragraph)
else:
print 'No words'
我的文本文件如下所示:
P1: Bla bla bla.
P2: Bla bla bla bla.
P1: Bla bla.
P3: Bla.
我需要做的下一部分是为每个参与者总结单词。我只能打印它们,但我不知道如何退回/重新使用它们。
除了总结每个参与者所说的所有单词外,我还需要一个新变量,其中包含每个参与者的字数统计,我可以稍后对其进行操作,例如
P1all = sum of words in paragraph
有没有办法将“you're”或“it's”等算作两个词?
有什么解决办法吗?
最佳答案
I would need a new variable with word count for each participant that I could manipulate later on
不,你需要一个 Counter
(Python 2.7+,否则使用 defaultdict(int)
)将人员映射到字数。
from collections import Counter
#from collections import defaultdict
words_per_person = Counter()
#words_per_person = defaultdict(int)
for ln in inputfile:
person, text = ln.split(':', 1)
words_per_person[person] += len(text.split())
现在 words_per_person['P1']
包含 P1
的单词数,假设 text.split()
是一个足够好的分词器为了你的目的。 (语言学家对词的定义意见不一,所以你总是会得到一个近似值。)
关于python - 如何总结对话中每个人的字数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429845/