regex - {First_name 和 First_name Last_name} 模式的正则表达式解决方案:
问题描述
我认为,以下内容应用了 Python 中使用的正则表达式。如果在正则表达式之外还有另一种方法可以做到这一点,我对此持开放态度。
我需要转换这种格式的字符串:
'{First_name1} and {First_name2 Last_name}'
(i.e. John and Mary Jones)
至:
'{First_name1 Last_name2}, {First_name2 Last_name2}
(i.e. John Jones, Mary Jones)
作为正则表达式的新手,这是一种让我感到困惑的模式。我假设我必须找到整个段的实例,捕获姓氏,然后使用 .sub() 在正确的位置添加副本?
编辑:虽然到目前为止提出的解决方案确实回答了这个问题,但我想我会提到我发现了另一种情况,到目前为止,这些解决方案正在被解决。也就是以下内容:
{First_name1 Last_name1, and First_name2, Last_name2}
很抱歉之前没有看到(因此,写在我原来的问题中)这种模式。
到目前为止,我已经修改了一个答案以达到这一点:
([^,]+)(?!\W,)( and [^ ]+ )([^ ]+)
我想我会在最后一个例子中基于那个逗号进行过滤。我的想法是,如果逗号存在,那么我想继续下一个案例。那有意义吗?
解决方案
如果您的数据始终采用这种格式,那么我可以看到不需要执行正则表达式,您可以简单地拆分字符串并使用索引以您需要的格式构造您想要的名称:
a = 'John and Mary Jones'
a_split = a.split()
[(a_split[0], a_split[-1]), (a_split[-2], a_split[-1])]
结果是
[('John', 'Jones'), ('Mary', 'Jones')]
推荐阅读
- jquery - 验证电子邮件字段并确保不为空
- c# - 从 SqlDatareader 返回多行
- powershell - '<' 运算符保留供将来使用命令 powershell
- python - 如何使用“名称”而不是 id 从 SQLite 中删除记录?
- javascript - 当父母有用户选择时输入不一致的选择()行为:无(基于铬的浏览器)
- python - 在 Databricks 中使用 PySpark 在 Azure DataLake 中的 partitionBy 和覆盖策略
- firebase - 如何获取 Firebase 自动收集的用户属性?
- python - 从 C++ 调用 Python,如何链接特定的 Anaconda 环境?
- json - jq 使用流解析 json 文件 > 20 gb
- python - 无法导入 Django,上周工作