根据另一个列表中的 unicode 代码(ascii 值)替换字符串列表中的字符串前缀

Replace string prefix in list of strings based on unicode code (ascii value) from another list

我有两个列表,例如:

a = ['119', '111', '111', '108', '105', '97', '111']

b = ['119esi', '111dl', '111lw', '108dvei', '105n', '97n', '111ka']

a 列表是字母的 ascii 格式表示,而不是字符串。我怎样才能以得到 "cohesive" 句子的方式合并它们。

换句话说:ascii 中的 119'w',所以合并它们,使 b[0] 现在是 "wesi",而不是 "119esi"

我想要的输出列表是:

['wesi', 'odl', 'olw', 'ldvei', 'in', 'an', 'oka']

程序如下:-

a = ['119', '111', '111', '108', '105', '97', '111']
b = ['esi', 'dl', 'lw', 'dvei', 'n', 'n', 'ka']
final = []
for x,y in zip(a,b):
   z = chr(int(x))+y
   final.append(z)
print(final)

这应该是解决方案,但我不是 100% 确定你的问题是什么

a = ['119', '111', '111', '108', '105', '97', '111']
b = ['119esi', '111dl', '111lw', '108dvei', '105n', '97n', '111ka']

result = []

for ax, bx in zip(a, b):
    assert bx.startswith(ax)
    rest = bx[len(ax):]
    letter = chr(int(ax))
    result.append(letter + rest)

print(result)
# ['wesi', 'odl', 'olw', 'ldvei', 'in', 'an', 'oka']

您可以将 chr() in a list comprehension with zip() 用作:

>>> a = ['119', '111', '111', '108', '105', '97', '111']
>>> b = ['119esi', '111dl', '111lw', '108dvei', '105n', '97n', '111ka']

>>> [chr(int(i))+j[len(i):] if j.startswith(i) else j for i, j in zip(a, b)]
['wesi', 'odl', 'olw', 'ldvei', 'in', 'an', 'oka']

这里我也在检查你的b中的字符串是否以a中的字符串开头。

如果这对你来说不是一个有效的案例,并且可以假设 b 中的字符串总是以 a 中的字符串开头,你可以通过跳过 [=18] 来进一步简化它=] 条件为:

>>> [chr(int(i))+j[len(i):] for i, j in zip(a, b)]
['wesi', 'odl', 'olw', 'ldvei', 'in', 'an', 'oka']