我有一个成功的代码,它将单词添加到括号中:但是我需要删除其中的重复项。你知道吗
我的代码:
import re
import collections
class Group:
def __init__(self):
self.members = []
self.text = []
with open('text1.txt') as f:
groups = collections.defaultdict(Group)
group_pattern = re.compile(r'^(\S+)\((.*)\)$')
current_group = None
for line in f:
line = line.strip()
m = group_pattern.match(line)
if m: # this is a group definition line
group_name, group_members = m.groups()
groups[group_name].members.extend(group_members.split(','))
current_group = group_name
else:
if (current_group is not None) and (len(line) > 0):
groups[current_group].text.append(line)
for group_name, group in groups.items():
print "%s(%s)" % (group_name, ','.join(group.members))
print '\n'.join(group.text)
print
我的文本文件:
Car(skoda,benz,bmw,audi)
The above mentioned cars are sedan type and gives long rides efficient
......
Car(Rangerover,Hummer,audi)
SUV cars are used for family time and spacious.
输出为:
Car(skoda,benz,bmw,audi,Rangerover,Hummer,audi,ferrari,lamborghini,porsche)
The above mentioned cars are sedan type and gives long rides efficient
......
SUV cars are used for family time and spacious.
这里是输出中的重复项,如何删除括号内的重复项?你知道吗
您不需要使用regex来删除重复项:在
Group
中生成members
一个set
(即self.members = set()
而不是self.members = []
)。然后自动删除重复项。但是,您将无法使用groups[group_name].members.extend(group_members.split(','))
。相反,必须使用|
运算符联合集,或使用update
更新它们:或者
或者,您可以在输出之前调用
set
,在那里执行重复删除:注意
set
没有排序,因此如果您需要与输入中的排序保持一致,这将不起作用。相反,您需要手动筛选列表中的重复项:相关问题 更多 >
编程相关推荐