Python将文本文件中的单词与字典匹配并操作Valu

2024-04-27 17:33:47 发布

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

我有一本字典,里面的关键字是简单的单词,值是一个分数。我想根据单词的频率和字典中存储的分数(值)来计算分数,并与文件(或字符串)中的数学单词进行比较。例如,假设我的文本是:

“狗是好宠物,仓鼠是坏宠物。所以我想要条狗”

我的字典是:

Dict={'dogs':5,'hampster':-2}

然后我想计算一个8分((2x5)-2=8)。我能在字典里找到出处

    for key in Dict: 
    m = re.findall(key, READ , re.IGNORECASE)

但我无法以有效的方式访问密钥的值。在

非常感谢任何帮助。在

谢谢, 斯科特


Tags: 文件key字符串文本re宠物字典数学
3条回答

编辑:史蒂夫五世的灵感来源于以下几点:

sentence = "...".split()
score = sum(sentence.count(word) * score for word, score in scores.items())

强制性的一句话:

^{2}$

然后分开:

>>> sum = 0
>>> counts = collections.Counter(s.split())
>>> for word, freq in counts.items():
...     sum += scores.get(word.lower(), 0) * freq
...
>>> sum
3

显著特点:

  • 分数不是8(正如您在上面所说的),而是3,因为单词dogs在您给出的字符串中只出现一次。如果要对单词dog计数两次,则需要一个(远)更复杂的算法,可能需要与一个多元化库接口来处理child -> children和{}等情况。这并不容易,也不一定正确。

  • 我已经包含了.lower()来忽略您给出的字符串中的大写字母。如果你不想那样的话,就取消通话。

  • 你拼错了“仓鼠”:p.

这应该是有效的:

mtext=“狗是很好的宠物,仓鼠是坏宠物。所以我想要条狗” 对于输入Dict: p=重新编译(“狗”,忽略案例) NuOfDogs=len(p.findall(mtext))#返回出现次数

如果可能的话用Katrielex的答案,它比我的更干净。如果您没有Python 2.7(像我一样),这可能对您有用:

sentence = "Dogs are great pets and hamsters are bad pets. That is why I want a dog"

scores = {'dog' : 5, 'hamster' : -2} 

occurrences = {}

for key in scores: 
  m = re.findall(key, sentence , re.IGNORECASE)
  occurrences[key] = len(m)

totalScore = 0

for word in occurrences:
  totalScore += scores.get(word.lower(), 0) * occurrences[word]

print totalScore

我在你的分数字典里做了“dogs”->;“dog”,假设这是个打字错误。如果你把它改回来,你的结果是3而不是复数。在

相关问题 更多 >