【问题标题】:extract substrings using regex python使用正则表达式 python 提取子字符串
【发布时间】:2022-01-04 06:39:02
【问题描述】:

我有一个字符串:

string= "**Started:** 2021-07-04 11:51:31 PM BST | **Finished:** 2021-07-04 11:51:46
PM BST | **Duration:** 1 Minute  
---  
Company| Participant|  Email | Joined| Duration| Messages  
---|---|---|---|---|---  
global| Bokg|
kabm@xyz.com| 2021-07-04 11:51:31 PM BST| 1 Minute | 0  
Brokers LP (GR) ((PM) by TR) (KW)| Re| ren@xyzgroup.com|
2021-07-04 11:51:31 PM BST| 1 Minute | 2  
---"

我想从中提取姓名和电子邮件 ID,即,

names=['Bokg','Re']
email=['kab@xyz.com','ren@xyzgroup.com']

【问题讨论】:

  • 尝试自己编写一些东西,如果不起作用,请具体向我们展示您所做的事情,以便我们为您提供帮助。您启动它,然后我们提供帮助。我们不是为你写的。向我们展示您尝试过的实际代码,然后描述发生的事情和不正确的事情,然后我们可以从那里帮助您。如果您先自己尝试一下,您可能会非常接近答案。

标签: python-3.x regex


【解决方案1】:

这是一个正则表达式re.findall 选项。首先,我们在列标题上拆分输入文本,留下包含实际内容的文本。然后,我们执行一个正则表达式查找所有以第二和第三个管道分隔的列为目标。

string = """**Started:** 2021-07-04 11:51:31 PM BST | **Finished:** 2021-07-04 11:51:46
PM BST | **Duration:** 1 Minute  
---  
Company| Participant|  Email | Joined| Duration| Messages  
---|---|---|---|---|---  
global merchant Bank (GR) ((PM) by TR) (Disclaimer)| Bokng Kim|
ka.b.kim@xyz.com| 2021-07-04 11:51:31 PM BST| 1 Minute | 0  
Brokers LP (GR) ((PM) by TR) (KW)| Ren Kim| ren.kim@xyzgroup.co.kr|
2021-07-04 11:51:31 PM BST| 1 Minute | 2  
---"""

inp = string.split('---|---|---|---|---|---')[1]
matches = re.findall(r'.*?\|\s*(.*?)\s*\|\s*(.*?)\s*\|', inp)
names = [x[0] for x in matches]
email = [x[1] for x in matches]
print(names)  # ['Bokng Kim', 'Ren Kim']
print(email)  # ['ka.b.kim@xyz.com', 'ren.kim@xyzgroup.co.kr']

【讨论】:

  • 完美运行 :) 谢谢蒂姆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多