#python-2.7
#python-2.7
Вопрос:
Каков наилучший способ создания отдельных списков для каждого набора совпадающих символов, найденных в многострочной строке?
str="""Name: abc1
Age: defg1
Place: xyz1
Name: abc2
Age: defg2
Place: xyz2
Name: abc3
Age: defg3
Place: xyz3
"""
Используя приведенный ниже код, я могу создать один большой список, но заинтересован в создании трех отдельных списков.
my_list = []
for each_module in str.split("n"):
if "Name: " in each_module:
my_list.append(each_module.strip("Name: "))
elif "Age: " in each_module:
my_list.append(each_module.strip("Age: "))
elif "Place: " in each_module:
my_list.append(each_module.strip("Place: "))
print my_list
Вывод:
['abc1', 'defg1', 'xyz1', 'abc2', 'defg2', 'xyz2', 'abc3', 'defg3', 'xyz3']
Предпочтительный вывод:
['abc1', 'defg1', 'xyz1']
['abc2', 'defg2', 'xyz2']
['abc3', 'defg3', 'xyz3']
Ответ №1:
Вы хорошо начали, просто создайте новый список, который вы сбрасываете при заполнении места, и добавьте его в свой основной список, как показано ниже:
my_str="""Name: abc1
Age: defg1
Place: xyz1
Name: abc2
Age: defg2
Place: xyz2
Name: abc3
Age: defg3
Place: xyz3
"""
my_list = []
new_list = []
for each_module in my_str.split("n"):
if "Name: " in each_module:
new_list.append(each_module.strip("Name: "))
elif "Age: " in each_module:
new_list.append(each_module.strip("Age: "))
elif "Place: " in each_module:
new_list.append(each_module.strip("Place: "))
my_list.append(new_list)
new_list = []
print(my_list)
Вывод:
[['bc1', 'defg1', 'xyz1'], ['bc2', 'defg2', 'xyz2'], ['bc3', 'defg3', 'xyz3']]
Комментарии:
1. Спасибо, Джонатан, но на самом деле я ищу значения каждого элемента в списке. Например: [Джон, 22 года, США] [Дэвид, 23 года, Великобритания]
2. Я обновил свой ответ, потому что понял, что вы использовали предопределенную переменную с именем
str
, которую я исправил после.3. Спасибо. Это именно то, что я искал. Работает отлично.