如何在Python中删除重复的子字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Python中删除重复的子字符串相关的知识,希望对你有一定的参考价值。
我有一部分重复的字符串,我想删除所有重复的“子字符串”而又不丢失字符串中单词的顺序。
例如:"12 PL DE LA HALLE BP 425 BRIVE-LA-GAILLARDE BP 425 BRIVE-LA-GAILLARDE BP 425 BRIVE-LA-GAILLARDE BP 425 BRIVE-LA-GAILLARDE"
这里"BP 425 BRIVE-LA-GAILLARDE"
重复4次。
我希望该字符串最终成为已删除重复项的"12 PL DE LA HALLE BP 425 BRIVE-LA-GAILLARDE"
。
更多重复的子字符串示例:
"TOUR SOCIETE SUISSE 1 BD VIVIER MERLE 1 BD VIVIER MERL"
=> "TOUR SOCIETE SUISSE 1 BD VIVIER MERLE"
"2 PARC DES ERABLES 66 RTE DE SARTROUVILLE 66 RTE DE SARTROUVILLE"
=> "2 PARC DES ERABLES 66 RTE DE SARTROUVILLE"
"CASERNE AUDEOUD 111 AV DE LA CORSE 111 AV DE LA CORSE"
=> "CASERNE AUDEOUD 111 AV DE LA CORSE"
感谢任何帮助。
答案
您尝试这个。
s="TOUR SOCIETE SUISSE 1 BD VIVIER MERLE 1 BD VIVIER MERL"
seen=set()
new_s=' '.join([seen.add(word) or word for word in s.split() if word not in seen])
# 'TOUR SOCIETE SUISSE 1 BD VIVIER MERLE MERL'
s="12 PL DE LA HALLE BP 425 BRIVE-LA-GAILLARDE BP 425 BRIVE-LA-GAILLARDE BP 425 BRIVE-LA-GAILLARDE BP 425 BRIVE-LA-GAILLARDE"
seen=set()
new_s=' '.join([seen.add(word) or word for word in s.split() if word not in seen])
# '12 PL DE LA HALLE BP 425 BRIVE-LA-GAILLARDE'
另一答案
请检查此。
str = "2 PARC DES ERABLES 66 RTE DE SARTROUVILLE 66 RTE DE SARTROUVILLE"
output_str = ""
output_list =[]
for sub_str in str.split():
if sub_str not in output_list:
output_list.append(sub_str)
output_str = output_str + " " + sub_str
print(output_str.strip())
另一答案
分割成多个部分,用dict
使其唯一,然后重新加入?
>>> s = "12 PL DE LA HALLE BP 425 BRIVE-LA-GAILLARDE BP 425 BRIVE-LA-GAILLARDE BP 425 BRIVE-LA-GAILLARDE BP 425 BRIVE-LA-GAILLARDE"
>>> ' '.join(dict.fromkeys(s.split(' ')))
'12 PL DE LA HALLE BP 425 BRIVE-LA-GAILLARDE'
以上是关于如何在Python中删除重复的子字符串的主要内容,如果未能解决你的问题,请参考以下文章