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']
解决方案
您已经开始了,只需创建一个新列表,您在填写该位置时重置该列表,并将其添加到您的主列表中,如下所示:
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']]
推荐阅读
- android - 为什么相机不颤抖打开?
- visual-studio - VS Debugger 是否有任何脚本支持,类似于 GDB 的脚本?
- javascript - 在js或jquery中点击广告时调用函数
- php - 如何在一列php中对子数组进行分组
- php - 如何通过 PHP 生成 {0} json 字符串?
- javascript - JS React 导入差异包大小
- javascript - Sensortower daterangepicker 设置期间的最小值最大值
- c++ - 在 C++20 中还需要 std::ssize() 吗?
- xml - 是否有一个 basex 函数可以随机擦除 XML 文件的某些部分?
- javascript - 从外部 api 迭代对象