【发布时间】:2018-01-02 12:38:04
【问题描述】:
我在一列中有一个 csv 文件,如下所示。符号和数字仅表明该文件不仅包含文本。我有两个目标:
- 统计一个单词出现的次数;
- 确定单词出现在多少行中。
Stuff
I like apples. Sally likes apples.
Jim has 4 berries. !@#
John has 2 apples.
理想情况下,代码应返回如下内容: {苹果:3} {行数:2}
我编写了一些代码来尝试计算出现次数,但它运行不正常(可能是因为标点符号)。另外,我不知道如何确定一个单词出现的行数;这可能就像计算每行中唯一出现的次数一样简单,但我不确定如何继续。这是我到目前为止在 Python 3.6.1 中完成的代码:
import csv
my_reader = csv.reader(open('file.csv', encoding = 'utf-8'))
ctr = 0
for record in my_reader:
if record[0] == 'apples':
ctr += 1
print(ctr)
代码仅返回 0 作为答案。帮忙?
【问题讨论】:
-
print(record)在循环中,看看里面放了什么。您可以使用str.find()方法在字符串中搜索子字符串。或者,您可以使用str,split()方法将字符串分成单独的“单词”,并使用空格(' ')作为分隔符。 -
print(record)将文件的最后一行返回为['John has 2 apples.'],即看起来它忽略了其他行。 -
也许不是。你把
printinside 放在循环里了吗?否则,您可能只会显示最后一条记录。 -
重点是
print(record)输出的是整行,而不是行中的每个单词。因此,您要么需要在每一行中查找子字符串,要么需要拆分每一行并查看单个单词。还有@martineau:我认为你的意思是str.split(' ')、str,split看起来不太正确。 -
@3D1T0R:是的,这是我的一个错字,而且大部分是在我试图表达的观点上。
标签: python python-3.x csv word-count