通过函数find获取唯一字符串

2024-05-14 22:21:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从文件(*.txt)中提取唯一的字符串。但我的代码写的是同一行重复。我需要让每个唯一的字符串发出一次。??你知道吗

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

此类输出:

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"']

Tags: 字符串代码retxtlenvrprintset
2条回答

请试试这个:

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

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

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

from collections import OrderedDict
...
unique_matches = list(OrderedDict.fromkeys(m for line in f for m in r.findall(line)))

相关问题 更多 >

    热门问题