如果字符串与lis中的元素匹配,则从字符串中提取子字符串

2024-06-01 00:09:51 发布

您现在位置:Python中文网/ 问答频道 /正文

如果列表中存在匹配元素,我想提取字符串的一部分,例如,我有一个字符串s和一个列表l1

s = 'Vipul Singh, Jun 24, 1995'
l1 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

现在我想从'Jun 24, 1995'中提取字符串s的子字符串,因为'Jun'出现在列表l1中。你知道吗

这就是我想要的子串,我尝试了很多regexstr函数,但是没有结果。你知道吗

注意:我有许多类似类型的字符串

vipul singh, Jan 1, 2017, 10:00,
ANI,May 6, 2009, 14:59 IST,

Tags: 字符串元素l1列表aprjunmarsep
1条回答
网友
1楼 · 发布于 2024-06-01 00:09:51

看起来您只需要提取日期,而且由于它们共享一个公共格式,这对于正则表达式来说是一个很容易的问题。你知道吗

尝试使用^{}

s = """
Vipul Singh, Jun 24, 1995
vipul singh, Jan 1, 2017, 10:00,
ANI,May 6, 2009, 14:59 IST,
"""
import re
dates = re.findall(r'[a-zA-Z]{3}\s[0-9]{1,2},\s[0-9]{4}', s)

print(dates)

输出:

['Jun 24, 1995', 'Jan 1, 2017', 'May 6, 2009']

如果您担心匹配'ABC 23, 1111'之类的内容,则只能接受有效月份作为前3个字母:

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
dates = re.findall(r'(?:{})\s[0-9]{{1,2}},\s[0-9]{{4}}'.format('|'.join(months)), s)

相关问题 更多 >