在Python3中有以下一对短字符串。x、 其长度必须相等:
string_a = 'he_lo_world'
string_b = 'hi_low_oldd'
我想
尽快
根据以下规则,根据对中的字符匹配方式创建“摘要字符串”:
(1) 如果字符相同,则新字母为S(相同)。除非匹配字符为
_
,则为U(下划线)。
(2) 否则,字符不匹配。如果不匹配,则字母为N(不匹配)。如果
string_a
有
_
和
string_b
不是,是的
A
如果
字符串\u b
有
_
和
字符串\u a
不是,是的
B
。
对于上面的一对,字符串应为:
SNUSSABSNNS
要构造这个字符串,我认为多个if/for语句效率太低。
这里使用列表理解和itertools示例,
Trying to find a match in two strings - Python
import itertools
string_a = 'he_lo_world'
string_b = 'hi_low_oldd'
same = [ i for i,x in enumerate(itertools.izip(string_a,string_b)) if all(y==x[0] for y in x)]
print(same) ## [0, 2, 3, 4, 7, 10]
我可以得到匹配的索引。(The
_==_
异常需要在列表理解中使用条件,因此上面不应存在索引2。)
我很困惑(A)如何基于这个索引列表重新构造字符串,以及(B)如何有效地处理不匹配的字符?