试图从.txt文件中计算特定的字符串(python)

时间:2015-04-08 18:32:18

标签: python string file counting

其实我有这样的条目:

(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)"

关于我如何正确计算它的任何提示,并以任何人都可以读取的方式输出它并知道字符串(可以是一行,因为条目格式)发生了多少次?

1 个答案:

答案 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