【问题标题】:Replace string prefix in list of strings based on unicode code (ascii value) from another list根据另一个列表中的 unicode 代码(ascii 值)替换字符串列表中的字符串前缀
【发布时间】:2021-01-26 10:37:58
【问题描述】:

我有两个列表,例如:

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

【问题讨论】:

    标签: python python-3.x string list ascii


    【解决方案1】:
    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']
    

    【讨论】:

      【解决方案2】:

      您可以将chr()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 中的字符串开头,您可以通过跳过if 条件来进一步简化它:

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

      【讨论】:

        【解决方案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% 确定您的问题是什么

        【讨论】:

          猜你喜欢
          • 2015-06-27
          • 2021-07-20
          • 2019-11-08
          • 1970-01-01
          • 2012-08-18
          • 2013-06-20
          • 1970-01-01
          • 1970-01-01
          • 2017-03-31
          相关资源
          最近更新 更多