我想删除括号内重复的单词,并将其替换为“S”+单词
例如:
(Skipper Skipper) -> (S Skipper)
('s 's) -> (S 's)
以下是字符串s
:
s = "(S (S (S (S (Skipper Skipper) ('s 's)) (Inc. Inc.)) (S (Bellevue Bellevue) (Wash. Wash.)))
(S (said said) (S (it it) (S (signed signed) (S (a a) (S (definitive definitive)
(S (merger merger) (S (agreement agreement) (S (for for) (S (S (a a)
(S (National National) (S (Pizza Pizza) (S (Corp. Corp.) (unit unit)))))
(S (to to) (S (acquire acquire) (S (S (S (the the) (S (90.6 90.6) (% %)))
(S (S (of of) (S (S (Skipper Skipper) ('s 's)) (Inc. Inc.))) (S (it it)
(S (does does) (S (n't n't) (own own)))))) (S (for for) (S (S (11.50 11.50)
(S (a a) (share share))) (S (or or) (S (about about) (S (28.1 28.1) (million million)))))))))))))))))))"
预期结果:
out = "(S (S (S (S (S Skipper) (S 's)) (S Inc.)) (S (S Bellevue) (S Wash.)))
(S (S said) (S (S it) (S (S signed) (S (S a) (S (S definitive) (S (S merger)
(S (S agreement) (S (S for) (S (S (S a) (S (S National) (S (S Pizza) (S (S Corp.)
(S unit))))) (S (S to) (S (S acquire) (S (S (S (S the) (S (S 90.6) (S %))) (S (S (S of)
(S (S (S Skipper) (S 's)) (S Inc.))) (S (S it) (S (S does) (S (S n't) (S own))))))
(S (S for) (S (S (S 11.50) (S (S a) (S share))) (S (S or) (S (S about) (S (S 28.1) (S million)))))))))))))))))))"
我试着做:
from collections import Counter
lst = s.lstrip("(").rstrip(")").replace("(", "").replace(")", "").split()
d = Counter(lst)
mapper = {((k + " ") * v).strip():"S" + " " + k for k, v in d.items()}
for k, v in mapper.items():
out = s.replace(k, v)
但这并不完全正确:
out = "(S (S (S (S (Skipper Skipper) ('s 's)) (Inc. Inc.)) (S (S Bellevue) (S Wash.)))
(S (S said) (S (it it) (S (S signed) (S (a a) (S (S definitive) (S (S merger)
(S (S agreement) (S (for for) (S (S (a a) (S (S National) (S (S Pizza) (S (S Corp.)
(S unit))))) (S (S to) (S (S acquire) (S (S (S (S the) (S (S 90.6) (S %))) (S (S (S of)
(S (S (Skipper Skipper) ('s 's)) (Inc. Inc.))) (S (it it) (S (S does) (S (S n't) (S own))))))
(S (for for) (S (S (S 11.50) (S (a a) (S share))) (S (S or) (S (S about) (S (S 28.1) (S million)))))))))))))))))))"
您可能需要在这里研究正则表达式。我已经创建了一个demo,它将匹配所有的内括号
有了这些,您可以分析每个匹配项的内容,并根据您的要求进行替换:
输出
有这样一种解决方案,它遍历单词列表,找到重复的单词,并替换每个重复单词的第一次出现
使用
re.sub
替换它们:相关问题 更多 >
编程相关推荐