[英]Count unique words in a text file (Python)
我是 Python 的新手,所以我正在做一些挑战,其中之一是查找文本文件中唯一单词的数量。 文本文件中有 212 个唯一单词,但我的代码只显示 0。谢谢你的帮助。
words=[]
count=0
with open ("text.txt","r") as file:
for line in file:
if line in words:
words.append(line)
k+=1
else:
pass
print(k)
由于未声明k
,因此代码段中似乎存在错误。 我假设您正在尝试count
唯一单词的数量。
另外,还有更好的方法可以通过将列表转换为集合来在列表中查找唯一值。 集合中的值将不包含重复的值。
查看下面的代码段。
words = []
count = 0
with open ("text.txt","r") as f:
# Get a list of lines in the file and covert it into a set
words = set(f.readlines())
count = len(words)
print(count)
更改为if line not in file,如果尚未将其添加到列表中,则要添加该单词;如果该单词已经存在,则将其忽略
您的示例代码片段中有很多错误:
dict
或set
比list
else
条件是不必要的 这是解决这些问题并使用一些简洁语言功能的简单实现:
with open("test.txt", "r") as file:
lines = file.read().splitlines()
uniques = set()
for line in lines:
uniques |= set(line.split())
print(f"Unique words: {len(uniques)}")
此示例使用集合和f字符串,后者仅在Python 3.6+中可用。 但是请注意,我们正在将整个文件内容“混入”一个变量,如果文件很大,这可能会很糟糕。 我假设您的示例文件很小。
另外,此示例不处理标点符号之类的情况。 因此,“测试”将被算作与“测试”不同的词。 (带句号)。 修复留给读者的练习。
count = 0
file = open("names.txt", "r")
read_data = file.read()
words = set(read_data.split())
for word in words:
count += 1
print('Total Unique Words:', count)
将 names.txt 替换为您的文件名
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.