【问题标题】:Python counter for counting the most commmon string listed in the output用于计算输出中列出的最常见字符串的 Python 计数器
【发布时间】:2014-06-04 14:28:42
【问题描述】:

大家好,我一直在编写这段代码来计算文本文档中出现的字符串数量,这是我之前的问题,代码如下所示:

from collections import Counter
with open("C:\\Documents and Settings\\Zha\\Desktop\\stringResult\\sguresult_lenght10.txt") as f:
    content = f.read()
a = Counter(content.split()).most_common()    
for line in a:
        print line

打印行结果的例子是这样的

('KERNEL32.dll', 58)
('not', 49)
('.data', 49)
("nRX|'", 20)
('xZGVr', 20)
('TyN*u', 20)
('[Wu^D', 20)

逗号前的部分是字符串,下一个是出现次数 现在的问题是我需要删除所有外面的括号和 ' ' 之间的单引号,只留下字符串和数字,即

KERNEL32.dll, 58
not, 49
.data, 49
etc

我一直在尝试使用正则表达式,但似乎我可能弄错了模式,因为单引号有时是字符串本身的第一部分。有什么简单的方法可以解决这个问题吗?谢谢

【问题讨论】:

    标签: python regex python-2.7 counter


    【解决方案1】:

    你可以用这个:

    for line in a:
        print '%s, %s' % (line[0], line[1])
    

    【讨论】:

      【解决方案2】:

      使用* 语法:

      for line in a:
          print *line
      

      * 语法告诉函数将集合中的元素视为单独的参数。

      例子:

      >>>foo = ('Hello', 'World', 1, 2, 3,)
      >>>print foo
      ('Hello', 'World', 1, 2, 3)
      >>>print *foo
      'Hello' 'World' 1 2 3
      

      【讨论】:

        【解决方案3】:
        a= dict(Counter(content.split()).most_common())
        
        for i,j in a.items():
            print i,j
        

        我的回答去掉了引号不需要添加新的条件

        【讨论】:

          猜你喜欢
          • 2015-06-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-22
          • 2015-02-18
          • 2022-01-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多