python - 用于复杂字符串的正则表达式
问题描述
我有来自 CSV 文件的行:
315,《悲惨世界》(1995),戏剧|战争
315,大恶霸 (1996),喜剧|戏剧
我想拆分行并列出 3 个元素,我需要一个通用的 REGEX 表达式,它在遇到 ',' 的地方进行拆分,但由于标题可能有逗号(如第一行所示),我需要跳过标题解析。带有逗号的标题也有引号,但我需要该表达式适用于这两种情况。可以用 REGEX 来做吗?
我正在尝试自己学习 REGEX,但在理解某些案例时遇到了困难。我真的很感谢你的帮助!
解决方案
如果您尝试解析.csv
文件,请不要手动解析,Python 已经有很多库可以为您解析。
否则,如果您的字符串在标题中有逗号时有引号,而在没有逗号时没有,您可以这样做:
>>> x = '315,"Misérables, Les (1995)",Drama|War'
>>> y = '315,Big Bully (1996),Comedy|Drama'
>>> x
'315,"Misérables, Les (1995)",Drama|War'
>>> y
'315,Big Bully (1996),Comedy|Drama'
>>> x.split('"') if len(x.split('"')) == 3 else x.split(',')
['315,', 'Misérables, Les (1995)', ',Drama|War']
>>> y.split('"') if len(y.split('"')) == 3 else y.split(',')
['315', 'Big Bully (1996)', 'Comedy|Drama']
这会将逗号留在第一部分和最后一部分中(如果它被引号分隔),因此您必须在之后手动删除它们。
推荐阅读
- python - 我 rm python3.9 我可以拿回来吗?
- javascript - 我的套接字怎么能留在房间里,所以客户端会收到消息
- java - 时区有冒号时如何解决解析异常?
- python - PySpark 中的语法 df.rdd.map(lambda row: row[0:]) 有什么作用?
- c# - 为什么在 try 块中返回变量不会更改在 finally 部分中重置该变量时返回的值?
- css - Jupyter 笔记本主题
- python-3.x - 所有互联网通话的python代理环境
- javascript - 如何仅为非隐藏媒体查询类触发 JS 事件?
- javascript - 反应Js | 根据登录输入从 API 取回用户 ID
- node.js - 使用 nexe 将 Node js 应用程序转换为 exe 失败?