Как развернуть строку внутри строки в 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? Я должен расширить все в строке до того, как я разберу ее в словарь или после того, как я разберу ее в словарь (и как)?
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