Python 找到行中的单词并计算行数
存档:Python 找到行中的单词并计算行数,python,Python,存档: aaa 012 345 abc deg hij hij aaa 075 aaa 345 658 我试过: filer = file.read().split('\n') count = 0 for line in filer: lines = line.split(' ') for words in lines: #print words, lines.count(words) if words in set(lines):
aaa 012 345
abc deg hij
hij aaa 075
aaa 345 658
我试过:
filer = file.read().split('\n')
count = 0
for line in filer:
lines = line.split(' ')
for words in lines:
#print words, lines.count(words)
if words in set(lines):
count = count + 1
print words, ', count line: ', count
结果表明:
aaa , count line: 1
012 , count line: 2
345 , count line: 3
abc , count line: 4
deg , count line: 5
hij , count line: 6
hij , count line: 7
aaa , count line: 8
075 , count line: 9
aaa , count line: 10
345 , count line: 11
658 , count line: 12
我想计算并打印包含行中每个单词的行的总数。
(很抱歉我的解释。)
预期成果:
aaa , count line: 3
012 , count line: 1
345 , count line: 2
abc , count line: 1
deg , count line: 1
hij , count line: 2
hij , count line: 2
aaa , count line: 3
075 , count line: 1
aaa , count line: 3
345 , count line: 2
658 , count line: 1
是否建议按原始行的顺序打印预期结果
因为我需要它们来计算“用于行频率的单词的术语频率”
例如:“aaa”的频率将通过使用总行数除以包含单词“aaa”的行数来计算。您需要将计数与每个单独的变量联系起来。我建议你试试这样的东西
file = open("this.txt",r)
tokenCount = {}
for line in file:
for token in line.split(' '):
if token in tokenCount.keys():
tokenCount[token] += 1
else:
tokenCount[token] = 1
for item in tokenCount:
print item, ' , count line: ' tokenCount[item]
您的输出有点不必要。它似乎知道一个标记在读取之前出现了多少次,但它看不出有任何必要这样做。您需要将计数与每个单独的变量联系起来。我建议你试试这样的东西
file = open("this.txt",r)
tokenCount = {}
for line in file:
for token in line.split(' '):
if token in tokenCount.keys():
tokenCount[token] += 1
else:
tokenCount[token] = 1
for item in tokenCount:
print item, ' , count line: ' tokenCount[item]
您的输出有点不必要。它似乎知道一个标记在读取之前出现了多少次,但它看不出有任何必要这样做。您需要将计数与每个单独的变量联系起来。我建议你试试这样的东西
file = open("this.txt",r)
tokenCount = {}
for line in file:
for token in line.split(' '):
if token in tokenCount.keys():
tokenCount[token] += 1
else:
tokenCount[token] = 1
for item in tokenCount:
print item, ' , count line: ' tokenCount[item]
您的输出有点不必要。它似乎知道一个标记在读取之前出现了多少次,但它看不出有任何必要这样做。您需要将计数与每个单独的变量联系起来。我建议你试试这样的东西
file = open("this.txt",r)
tokenCount = {}
for line in file:
for token in line.split(' '):
if token in tokenCount.keys():
tokenCount[token] += 1
else:
tokenCount[token] = 1
for item in tokenCount:
print item, ' , count line: ' tokenCount[item]
您的输出有点不必要。它似乎知道一个令牌在读取之前出现了多少次,但却看不出有任何必要这样做。就是为了这个目的而做的:
from collections import Counter
counter = Counter()
with open('data.txt') as data:
for line in data:
counter.update(line.split())
for item, count in counter.items():
print "%s , count: %s" % (item, count)
输出:
abc, count: 1
aaa, count: 3
345, count: 2
012, count: 1
075, count: 1
hij, count: 2
658, count: 1
deg, count: 1
编辑:我仍然有点不清楚您想要的最终结果是什么,但这会产生您要求的确切输出:
from collections import Counter
line_frequencies = Counter()
with open('data.txt') as data:
lines = [line.split() for line in data]
for line in lines:
unique_line = set(line)
line_frequencies.update(unique_line)
for line in lines:
for term in line:
print "%s , count line: %s" % (term, line_frequencies[term])
print "\n"
其目的是:
from collections import Counter
counter = Counter()
with open('data.txt') as data:
for line in data:
counter.update(line.split())
for item, count in counter.items():
print "%s , count: %s" % (item, count)
输出:
abc, count: 1
aaa, count: 3
345, count: 2
012, count: 1
075, count: 1
hij, count: 2
658, count: 1
deg, count: 1
编辑:我仍然有点不清楚您想要的最终结果是什么,但这会产生您要求的确切输出:
from collections import Counter
line_frequencies = Counter()
with open('data.txt') as data:
lines = [line.split() for line in data]
for line in lines:
unique_line = set(line)
line_frequencies.update(unique_line)
for line in lines:
for term in line:
print "%s , count line: %s" % (term, line_frequencies[term])
print "\n"
其目的是:
from collections import Counter
counter = Counter()
with open('data.txt') as data:
for line in data:
counter.update(line.split())
for item, count in counter.items():
print "%s , count: %s" % (item, count)
输出:
abc, count: 1
aaa, count: 3
345, count: 2
012, count: 1
075, count: 1
hij, count: 2
658, count: 1
deg, count: 1
编辑:我仍然有点不清楚您想要的最终结果是什么,但这会产生您要求的确切输出:
from collections import Counter
line_frequencies = Counter()
with open('data.txt') as data:
lines = [line.split() for line in data]
for line in lines:
unique_line = set(line)
line_frequencies.update(unique_line)
for line in lines:
for term in line:
print "%s , count line: %s" % (term, line_frequencies[term])
print "\n"
其目的是:
from collections import Counter
counter = Counter()
with open('data.txt') as data:
for line in data:
counter.update(line.split())
for item, count in counter.items():
print "%s , count: %s" % (item, count)
输出:
abc, count: 1
aaa, count: 3
345, count: 2
012, count: 1
075, count: 1
hij, count: 2
658, count: 1
deg, count: 1
编辑:我仍然有点不清楚您想要的最终结果是什么,但这会产生您要求的确切输出:
from collections import Counter
line_frequencies = Counter()
with open('data.txt') as data:
lines = [line.split() for line in data]
for line in lines:
unique_line = set(line)
line_frequencies.update(unique_line)
for line in lines:
for term in line:
print "%s , count line: %s" % (term, line_frequencies[term])
print "\n"
建议?你应该试着提出一个具体的问题。什么不起作用?您哪里有问题?使用dict如何?为什么预期输出中包含多次的单词总数?
集合(行)中的单词
不符合您的要求。我仍然不太明白。“将使用总行数除以包含单词‘aaa’的行数来计算‘aaa’的频率。”。这很清楚。但另一句我不明白,特别是“那是在线路频率中使用的”。建议?你应该试着提出一个具体的问题。什么不起作用?您哪里有问题?使用dict如何?为什么预期输出中包含多次的单词总数?集合(行)中的单词
不符合您的要求。我仍然不太明白。“将使用总行数除以包含单词‘aaa’的行数来计算‘aaa’的频率。”。这很清楚。但另一句我不明白,特别是“那是在线路频率中使用的”。建议?你应该试着提出一个具体的问题。什么不起作用?您哪里有问题?使用dict如何?为什么预期输出中包含多次的单词总数?集合(行)中的单词
不符合您的要求。我仍然不太明白。“将使用总行数除以包含单词‘aaa’的行数来计算‘aaa’的频率。”。这很清楚。但另一句我不明白,特别是“那是在线路频率中使用的”。建议?你应该试着提出一个具体的问题。什么不起作用?您哪里有问题?使用dict如何?为什么预期输出中包含多次的单词总数?集合(行)中的单词
不符合您的要求。我仍然不太明白。“将使用总行数除以包含单词‘aaa’的行数来计算‘aaa’的频率。”。这很清楚。但另一句我不明白,尤其是“用于行频率的”。它不能按原行顺序打印出来,对吗?例如aaa 012345::aaa,计数行:3;012,计数行:1;345,计数行:2您还可以向OP教授有关计数器的知识。最常见的()方法是按频率(最频繁的第一个)排序单词。@ThanaDaray它可以做任何您想做的事情。但是,由于您没有多次回答我的问题,即为什么要在输出中输入总计,我真的不太明白您到底想要什么输出以及为什么。@ThanaDaray好的,请相应地更新您的问题(除了示例之外,请给出输出的定义)。@LukasGraf感谢您的回答。我试着去理解他们。从lines=[line.split()for line in data],您能解释一下为什么在for循环之后使用它们而不是生成列表吗。对不起,我要了很多。它不能按原行顺序打印出来,对吗?例如aaa 012345::aaa,计数行:3;012,计数行:1;345,计数行:2您还可以向OP教授有关计数器的知识。最常见的()方法是按频率(最频繁的第一个)排序单词。@ThanaDaray它可以做任何您想做的事情。但是,由于您没有多次回答我的问题,即为什么要在输出中显示总计,我真的不太明白您到底想要什么输出以及为什么。@ThanaDaray好的,请相应地更新您的问题(除了示例之外,请给出输出的定义