重复和合并字符串的示例:“16.01068.0%0 8p%.a .p .a.”
想要提取的子字符串:“16.008% p.a.”
更完整的示例:“CCoonnttiingnggeenntt CCoouuppoonn 16.01068.0%0 8p%.a .p (.Ma.o (nMtholyn)thly)”
所需子字符串:“或有优惠券 16.008% 年利率(每月)”
我的问题是,当原始子字符串已经包含重复字符(例如“16.008”中的两个“0”)时,我当前的函数有时会保留错误的重复字符(给出错误的结果“16.080”)。
您可以将此现象视为在主字符串后面尾随一定数量字符的重复字符串。由于索引 i 处的重复字符串应始终与索引 i 处的主字符串匹配,因此您可以使用此方法来确定传入字符是属于重复字符串还是主字符串:
def dedupe(string):
output = []
i = 0
for char in string:
if i < len(output) and output[i] == char:
i += 1
else:
output.append(char)
return ''.join(output)
这样:
dedupe("CCoonnttiinnggeenntt CCoouuppoonn 16.01068.0%0 8p%.a .p (.Ma.o (nMtholyn)thly)"))
返回:
Contingent Coupon 16.008% p.a. (Monthly)
请注意,我相信您问题中的示例输入缺少前两个单词后面的重复空格,我在上面的示例中为您插入了这些空格。