python - 使用 str.split 分割多行
问题描述
尝试使用 str.split 单行拆分来拆分多行段落可以正常工作。str.split 是拆分多行的正确方法吗?我在这里缺少什么?单行拆分正常工作示例:
dmap_lines = """Nople Normal Altar1-truck-Altar2,Altar2-train-Cansomme,Cansomme-flight-Karoh,Karoh-truck-Nople"""
destinations = []
remainders1 = []
stages = []
for line in dmap_lines:
destination, remainder1, remainder = dmap_lines.split(' ')
destinations.append(destination)
remainders1.append(remainder1)
remainder = remainder.split(',')
stages.append(remainder)
print(destination)
print(remainder1)
print(type(remainder))
print(remainder)
Expected Output:
Nople
Normal
<class 'list'>
['Altar1-truck-Altar2', 'Altar2-train-Cansomme', 'Cansomme-flight-Karoh', 'Karoh-truck-Nople']
多行代码:
dmap_lines = """Nople Normal Altar1-truck-Altar2,Altar2-train-Cansomme,Cansomme-flight-Karoh,Karoh-truck-Nople\nDria Normal Altar1-truck-Altar2,Altar2-train-Mala1,Mala1-truck-Mala2,Mala2-flight-Dria"""
destinations = []
remainders1 = []
stages = []
for line in dmap_lines:
destination, remainder1, remainder = dmap_lines.split(' ')
destinations.append(destination)
remainders1.append(remainder1)
remainder = remainder.split(',')
stages.append(remainder)
print(destination)
print(remainder1)
print(type(remainder))
print(remainder)
Receiving error in output:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-78-9eb9f8fa1c64> in <module>
4 stages = []
5 for line in dmap_lines:
----> 6 destination, remainder1, remainder = dmap_lines.split(' ')
7 destinations.append(destination)
8 remainders1.append(remainder1)
ValueError: too many values to unpack (expected 3)
预期输出:
Nople
Normal
<class 'list'>
['Altar1-truck-Altar2', 'Altar2-train-Cansomme', 'Cansomme-flight-Karoh', 'Karoh-truck-Nople']
Dria
Normal
<class 'list'>
['Altar1-truck-Altar2,Altar2-train-Mala1,Mala1-truck-Mala2,Mala2-flight-Dria']
为什么 for 循环不遍历多行并将字符串拆分为多个部分?
解决方案
有什么理由re.findall
在这里不是更好的方法:
dmap_lines = "Nople Normal Altar1-truck-Altar2,Altar2-train-Cansomme,Cansomme-flight-Karoh,Karoh-truck-Nople"
matches = re.findall(r'\b\w+-\w+-\w+\b', dmap_lines)
print(matches)
这打印:
['Altar1-truck-Altar2', 'Altar2-train-Cansomme', 'Cansomme-flight-Karoh',
'Karoh-truck-Nople']
要获取单个 CSV 字符串,请使用join
:
csv = ','.join(matches)
print(csv)
这打印:
Altar1-truck-Altar2,Altar2-train-Cansomme,Cansomme-flight-Karoh,Karoh-truck-Nople
推荐阅读
- javascript - 我该如何表达这个元素?
- javascript - 如何反转 EJS forEach 循环
- javascript - Postmessage 来源和数据未定义
- java - java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger 不能转换为 java.lang.Long
- php - 将 JSON 插入 MySQL 表时转义引号
- php - PHP Math - 根据不同的范围将数据库中的值相乘
- amazon-web-services - apigateway 身体映射模板不适用于 s3 静态网站
- javascript - 如果值为零,如何创建一个类以禁用按钮
- python - 在 PyX(python)中填充闭合曲线失败
- javascript - 在特定时间加载 BLOB 视频