【问题标题】:How to expand a string within a string in python?如何在python中的字符串中扩展字符串?
【发布时间】:2015-08-29 02:06:58
【问题描述】:

我有一个如下所示的字符串:

1 | xxx | xxx | xxx | yyy*a*b*c | xxx

我想扩展yyy*a*b*c 部分,使字符串看起来像这样:

1 | xxx | xxx | xxx | yyya | yyyb | yyyc | xxx

我实际上有一个大文件,这些字符串之间有一个分隔符。 我已将文件解析为如下所示的字典:

{'1': ['xxx' , 'xxx', 'xxx', 'yyy*a*b*c', 'xxx' ], '2': ['xxx*d*e*f', ...,  'zzz'], etc}

我需要将 yyy*a*b*cxxx*d*e*f 部分替换为列表中的其他项目。

如何在 python 3 中做到这一点?我应该在将字符串解析为字典之前还是在将其解析为字典之后(以及如何)展开字符串中的所有内容?

【问题讨论】:

    标签: python string dictionary concatenation list-comprehension


    【解决方案1】:

    您可以使用拆分和简单的列表推导来做到这一点:

    def expand_input(input):
        temp = input.split("*")
        return [temp[0]+x for x in temp[1:]]
    
    print(expand_input("yyy*a*b*c"))
    >>> ['yyya', 'yyyb', 'yyyc']
    

    【讨论】:

      【解决方案2】:

      您应该在解析文件中的数据时这样做,只需在添加到列表时通过此函数传递每个参数,添加到@tuananh 答案:-

      def expand_input(input):
          temp = input.split("*")
          return [temp[0]+x for x in temp[1:]] if len(temp)>1 else input
      

      【讨论】:

        【解决方案3】:

        process 将接收如下列表:

        ['xxx', 'xxx', 'yyy*a*b*c', 'xxx*d*e*f']
        

        并返回完整列表,并扩展正确的术语:

        def expand(s):
            """
            expand('yyy*a*b*c') --> ['yyya', 'yyyb', 'yyyc']
            expand('xxx') --> ['xxx']
            """
        
            if "*" not in s:
                return s
            base, suffixes = s.split("*")
            return [base + suffix for suffix in suffixes]
        
        def process(strings):
            result = []
            for s in strings:
                result.extend(s)
            return result
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-06-18
          • 2018-05-26
          • 2011-09-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-24
          相关资源
          最近更新 更多