[英]Python; counts words from one file in lines from other file
我有一个带有单词的文件,我将它们导入到带有pandas的python中。 使用我的代码,我想计算其他文件中的单词数量,并输出每个文件中每个单词的计数。 我正在遍历多个文件,因此我正在使用glob。 效果很好,但问题在于计数
我的档案看起来像这样
>1
GTCTTCCGGCGAGCGGGCTTTTCACCCGCTTTATCGTTACTTATGTCAGCATTCGCACTT
CTGATACCTCCAGCAACCCTCACAGGCCACCTTCGCAGGCTTACAGAACGCTCCCCTACC
>2
AAAGAAAGCGTAATAGCTCACTGGTCGAGTCGGCCTGCGCGGAAGATGTAACGGGGCTAA
ACCATGCACCGAAGCTGCGGCAGCGACACTCAGGTGTTGTTGGGTAGGGGAGCGTTCTGT
单词txt文件包含我要查找的单词。 为了简化它,例如,它包含单词“ GTCTT,CCCGC和AACGG”。
使用我的代码,我想查找这些单词并用以下代码计数
import pandas as pd
import glob
from itertools import groupby
word = pd.read_csv("word.txt", delim_whitespace=True,header=None)
for file in glob.glob('input.txt'):
with open(file) as f:
for k, g in groupby(f, lambda x: x.startswith('>')):
if k:
sequence = next(g).strip('>\n')
else:
d1 = list(''.join(line.strip() for line in g))
counts = Counter()
if d1 == word:
counts[d1] += 1
print(counts)
我的输出必须告诉我找到单词的次数
>1
GTCTT 1
CCCGC 1
AACGG 0
>2
GTCTT 0
CCCGC 0
AACGG 1
有人可以帮我更改计数代码吗? 我不知道怎么做。
我对您的代码做了一些更改:
#!/usr/bin/env python
with open('file.txt','r') as f: l = f.read().splitlines()
with open('word.txt', 'r') as f: words = f.read().split()
nl = [i for s in [[j,l[i+1]+l[i+2]]for i,j in enumerate(l) if '>' in j] for i in s]
counts = {}
for i in nl:
if '>' in i:
print i
counts = {}
else:
counts = {w:i.count(w) for w in words}
for k,v in counts.items(): print '{} {}'.format(k,v)
在上面的代码片段中:
GTCTT CCCGC AACGG
(以空格分隔)和 上面的代码给出了结果:
>1
AACGG 0
GTCTT 1
CCCGC 1
>2
AACGG 1
GTCTT 0
CCCGC 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.