替换其他列表中基于unicode代码(ascii值)的字符串列表中的字符串前缀

2024-10-17 08:24:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个清单,如:

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

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

a列表是ascii格式的字母表示,但不是字符串。我怎样才能把它们合并成一个“内聚”的句子

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

我想要的输出列表是:

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

Tags: 字符串inan列表格式字母ascii句子
3条回答

节目如下:-

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']

您可以在列表理解中使用^{},使用^{}作为:

>>> 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中的字符串开头,您可以通过跳过if条件进一步简化它,如下所示:

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

相关问题 更多 >