Python在(字符串)列表项中查找并计算特定单词

2024-07-04 05:36:47 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,亲爱的程序员们

我想在列表项中找到某些单词。我的输入如下:

myInputList = ['Hauses\tNN\tHaus', 'guten\tADJ\tgut', 'geht\tVFIN\tgehen'...]

我要查找并计数\tNN\t或\tADJ\t或\tVFIN\t。 我要计算的单词的位置总是一样的,就像你在例子中看到的。你知道吗

我尝试了以下代码,但出现以下错误:ValueError要解包的值太多(应为3)

from collections import Counter

myInputList = Counter([b for a,b,c in myInputList])
    print(myInputList)

实际上,我能理解为什么这个代码不起作用。但我没有别的办法。你知道吗

因此,我的目标是计算位于\t之间的Speach标记的部分。 最后我想说:有5个NN,4个ADJA。。。你知道吗


Tags: 代码列表counter单词程序员gutentnntadj
3条回答

您可以使用^{}。如果一个列表项中可能出现多个值,则可以删除break,否则会在特定字符串的第一个匹配处停止。你知道吗

myInputList = ['Hauses\tNN\tHaus', 'guten\tADJ\tgut', 'geht\tVFIN\tgehen']
values = ['\tNN\t', '\tADJ\t', '\tVFIN\t']

from collections import defaultdict

d = defaultdict(int)

for item in myInputList:
    for v in values:
        if v in item:
            d[v] += 1
            break

print(d)

defaultdict(int, {'\tADJ\t': 1, '\tNN\t': 1, '\tVFIN\t': 1})

包括“\t”不存在时的情况

from collections import Counter
myInputList = ['Hauses\tNN\tHaus', 'guten\tADJ\tgut', 'geht\tVFIN\tgehen','xyz']
Counter([x.split('\t')[1] for x in myInputList if '\t' in x])

转换成字典

from collections import Counter
myInputList = ['Hauses\tNN\tHaus', 'guten\tADJ\tgut', 'geht\tVFIN\tgehen','xyz']
d=dict(Counter([x.split('\t')[1] for x in myInputList if '\t' in x]))
print(d['NN'])

输出:1

myInputList = ['Hauses\tNN\tHaus', 'guten\tADJ\tgut', 'geht\tVFIN\tgehen']

newList = []
for i in myInputList:

    newList.extend(i.split("\t"))

from collections import Counter
Counter(newList)

给予

{'ADJ': 1,
 'Haus': 1,
 'Hauses': 1,
 'NN': 1,
 'VFIN': 1,
 'gehen': 1,
 'geht': 1,
 'gut': 1,
 'guten': 1}

如果您想要并且确定只需要第二个索引中的元素,那么您可以简单地执行以下操作

myInputList = ['Hauses\tNN\tHaus', 'guten\tADJ\tgut', 'geht\tVFIN\tgehen']

newList = []
for i in myInputList:

    newList.append(i.split("\t"))

from collections import Counter



onlySecond = [i[1] for i in newList]
dict(Counter(onlySecond))

会给你

{'ADJ': 1, 'NN': 1, 'VFIN': 1}

相关问题 更多 >

    热门问题