如何在 python 中的字符串中扩展字符串?

How to expand a string within a string in python?

我有一个看起来像这样的字符串:

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 中执行此操作?我应该在将字符串解析为字典之前还是在将其解析为字典之后(以及如何)展开字符串中的所有内容?

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

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

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

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

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