根据另一个列表中的 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']
我有两个列表,例如:
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']