文档里字符串的比较与计数

sesame172 2012-05-31 07:57:39
如何计算一个文档里的一列有多少不同的字符串
比如有一a.txt
111;abcdefg;17
132;efdghjra;18
113;e70a23e;16
134;e70a23e;18
115;abcdefg;19
要问第2列'abcdefg'这列,有多少个不一样的字符串。谢谢各位老师帮忙
...全文
122 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolbirdflyfirst 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

Python code

print len(set(l.split(';')[1] for l in open('a.txt')))
[/Quote]
+10086。
GhostFromHeaven 2012-06-03
  • 打赏
  • 举报
回复

import os
aDict = {}
if os.access('a.txt', os.R_OK):
with open('a.txt', 'rt') as fin:
for line in fin:
values = line.split(';')
if len(values) >= 2:
value = values[1]
aDict[value] = aDict.setdefault(value, 0) + 1
for (k,v) in aDict.items():
print '%s:%d' % (k, v)



e70a23e:2
efdghjra:1
abcdefg:2
sesame172 2012-06-01
  • 打赏
  • 举报
回复
谢谢 bugs2k libralibra,2位的方法都行,但是我想问多点问题,希望2位和大家知道的也都帮帮我。

@bugs2k 您写的aDict[y] = 1 是指什么意思?是只在dict里只写入一次?

@libralibra 如果我要做的结果不是这么短,比如这个txt有上千行这样的,我能定义
file = open('*','r')
for line in file:
...
...
m=re.findall(res,s)
这样行吗?我做出来还是有错TT

再次谢谢2位和大家
panghuhu250 2012-06-01
  • 打赏
  • 举报
回复

print len(set(l.split(';')[1] for l in open('a.txt')))
libralibra 2012-05-31
  • 打赏
  • 举报
回复
用正则加set

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import re
>>> s = '''111;abcdefg;17
132;efdghjra;18
113;e70a23e;16
134;e70a23e;18
115;abcdefg;19'''
>>> res = r';(.*?);'
>>> m = re.findall(res,s)
>>> set(m)
set(['e70a23e', 'efdghjra', 'abcdefg'])
>>> print len(set(m))
3
>>>

bugs2k 2012-05-31
  • 打赏
  • 举报
回复
aDict = {};
fd = open('test.txt')
for line in fd:
x, y, z = line.split(';')
aDict[y] = 1
fd.close()
print aDict
sesame172 2012-05-31
  • 打赏
  • 举报
回复
@bugs2k 额。。。我忘记说用的是python了,我去研究下perl,如果DATA很多怎么办? 谢谢你
bugs2k 2012-05-31
  • 打赏
  • 举报
回复
#!/usr/bin/env perl

use strict;
use warnings;

my $text = join '', <DATA>;
my %names = $text =~ /^\d+;(\w+);(\d+)$/gm;
print "$_\n" for keys %names;

__DATA__
111;abcdefg;17
132;efdghjra;18
113;e70a23e;16
134;e70a23e;18
115;abcdefg;19

37,741

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧