其实我有这样的条目:
(observatório=astronómico, de o, universidade=de=coimbra)
(centro=de=astronomia, de o, universidade=do=porto=catarina=lobo)
(núcleo=interactivo=de=astronomia, em o, centro=de=interpretação=ambiental=da=ponta=do=sal)
(câmara=municipal, de, cascais)
(câmara, de, nova=iorque)
(presidência, de o, pe)
(fortis, em, bruxelas)
(macquarie=futures, de o, eua)
(força=internacional=de=assistência=e=segurança, constituir o, força=de=reacção=rápida=do=comandante)
(forças=nacionais=destacadas, em o, afeganistão)
(nato, em o, afeganistão)
(nato, em o, afeganistão)
并且需要计算字符串重复的次数并将其输出到另一个.txt。我是用dict做的,但对.strip特殊字符感到沮丧。
# -*- coding: utf-8 -*-
# !/usr/bin/python
from Tkinter import Tk
from tkFileDialog import askopenfilename
Tk().withdraw()
filename = askopenfilename()
file = open(filename, "r+")
wordcount = {}
for word in file.read().split():
if word not in wordcount:
wordcount[word] = 1
else:
wordcount[word] += 1
for k, v in wordcount.iteritems():
print k, "=", v, "vez(es)"
关于我如何正确计算它的任何提示,并以任何人都可以读取的方式输出它并知道字符串(可以是一行,因为条目格式)发生了多少次?
答案 0 :(得分:1)
由于您的文字文件不包含单词字符,因此您需要提取单词,为此您可以使用regex
,然后您可以使用collections.Counter
来获取包含单词频率的字典:< / p>
>>> from collections import Counter
>>> words=re.findall('\w+',s)
>>> Counter(words)
Counter({'o': 14, 'de': 12, 'em': 5, 'afeganist': 3, 'for': 3, 'do': 3, 'a': 3, 'ncia': 2, 'universidade': 2, 'mara': 2, 'astronomia': 2, 'nato': 2, 'centro': 2, 'c': 2, 'cascais': 1, 'ponta': 1, 'coimbra': 1, 'sal': 1, 'pida': 1, 'observat': 1, 'rio': 1, 'as': 1, 'catarina': 1, 'seguran': 1, 'macquarie': 1, 'nacionais': 1, 'nova': 1, 'eua': 1, 'interpreta': 1, 'internacional': 1, 'constituir': 1, 'pe': 1, 'reac': 1, 'bruxelas': 1, 'lobo': 1, 'assist': 1, 'municipal': 1, 'comandante': 1, 'da': 1, 'mico': 1, 'ambiental': 1, 'astron': 1, 'iorque': 1, 'fortis': 1, 'porto': 1, 'e': 1, 'futures': 1, 'n': 1, 'r': 1, 'interactivo': 1, 'presid': 1, 'destacadas': 1, 'cleo': 1})
\w+
将匹配长度为1或更长的单词字符组合!
要计算特定单词,您可以使用list.count()
方法:
>>> words.count('coimbra')
1
>>> words.count('a')
3