import re
col4="""May god bless our families studied. CiteSeerX 2009-05-24 2007-11-19 2004"""
b=re.findall(r'\sCiteSeerX',col4)
print b
我必须打印“愿上帝保佑我们的家人研究”。我正在使用pythton正则表达式来提取文件名,但我只是将CiteSeerX作为输出。我在一个非常大的数据集上这样做,所以我只想使用正则表达式,如果有任何其他有效和更快的方式请指出。
此外,我希望去年 2004 作为输出。
我是正则表达式的新手,现在我的上面的实现是错误的但我找不到正确的表达式。这是一个非常天真的问题。对不起,谢谢你。
答案 0 :(得分:0)
如果您所有数据的结构与您提供的样本相似,那么您可以选择:
import re
data = re.findall("(.*?) CiteSeerX.*(\d{4})$", col4)
if data:
# we have a match extract the first capturing group
title, year = data[0]
print(title, year)
else:
print("Unable to parse the string")
# Output: May god bless our families studied. 2004
此片段提取CiteSeerX
之前的所有内容作为标题,最后4位数字作为年份(同样,假设您的所有数据的结构相似)。括号标记了我们感兴趣的部分的捕获组。
<强>更新强>: 对于发布年份后有元数据的情况,请使用以下正则表达式:
import re
YEAR = "\d{4}"
DATE = "\d\d\d\d-\d\d-\d\d"
def parse_citation(s):
regex = "(.*?) CiteSeerX\s+{date} {date} ({year}).*$".format(date=DATE, year=YEAR)
data = re.findall(regex, s)
if data:
# we have a match extract the first group
return data[0]
else:
return None
c1 = """May god bless our families studied. CiteSeerX 2009-05-24 2007-11-19 2004"""
c2 = """May god bless our families studied. CiteSeerX 2009-05-24 2007-11-19 2004 application/pdf text http //citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.1.1483 http //www.biomedcentral.com/content/pdf/1471-2350-5-20.pdf en Metadata may be used without restrictions as long as the oai identifier remains attached to it."""
print(parse_citation(c1))
print(parse_citation(c2))
# Output:
# ('May god bless our families studied.', '2004')
# ('May god bless our families studied.', '2004')
答案 1 :(得分:0)
这是一个不使用正则表达式的答案。
>>> s = "now is the time for all good men"
>>> s.find("all")
20
>>> s[:20]
'now is the time for '
>>>