首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过函数findall获得唯一字符串

通过函数findall获得唯一字符串
EN

Stack Overflow用户
提问于 2014-01-30 12:28:13
回答 2查看 177关注 0票数 2

我需要从文件(*.txt)中提取唯一的字符串。但是我的代码写了,所以同一行重复。我需要得到每一个唯一的字符串发出一次。??

代码语言:javascript
复制
import re
f=open('C:\\isg-2000.txt')

p=f.readlines()
print len(p)
for i in range(len(p)):
  S = re.findall(r'set vrouter \".+?\"',p[i])
  if S:

    print S

这类产出:

代码语言:javascript
复制
4438
['set vrouter "untrust-vr"']
['set vrouter "trust-vr"']
['set vrouter "UntrustGi-vr"']
['set vrouter "TrustGi-vr"']
['set vrouter "CNDT-vr"']
['set vrouter "MGT"']
['set vrouter "MGT"']
['set vrouter "MGT"']
['set vrouter "untrust-vr"']
['set vrouter "trust-vr"']
['set vrouter "UntrustGi-vr"']
['set vrouter "TrustGi-vr"']
['set vrouter "CNDT-vr"']
['set vrouter "MGT"']
['set vrouter "untrust-vr"']
['set vrouter "trust-vr"']
['set vrouter "UntrustGi-vr"']
['set vrouter "TrustGi-vr"']
['set vrouter "CNDT-vr"']
['set vrouter "MGT"']
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-30 12:35:23

set与生成器表达式一起使用:

代码语言:javascript
复制
import re
with open('C:\\isg-2000.txt') as f:
   r = re.compile(r'set vrouter \".+?\"')
   unique_matches = set(m for line in f for m in r.findall(line))

注意,如果顺序重要,则设置不保留顺序,请使用collections.OrderedDict

代码语言:javascript
复制
from collections import OrderedDict
...
unique_matches = list(OrderedDict.fromkeys(m for line in f for m in r.findall(line)))
票数 2
EN

Stack Overflow用户

发布于 2014-01-30 12:32:24

请试试这个:

代码语言:javascript
复制
import re
f=open('C:\\Users\\vlazarev\\Desktop\\isg-2000-1-2013-08-14_for_amt.txt')

s = set(re.findall(r'set vrouter \".+?\"', f.read()))
print s
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21456557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档