如何在 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*c
和 xxx*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
我有一个看起来像这样的字符串:
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*c
和 xxx*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