我目前正在处理字符串中的拾音器。
一个字符串包含3行,第1行人名(总是),第2行日期和时间(修复格式),第3行注释(可以以数字和字母开头)。中间有空行。
我想要的只是名字。所以我想使用正则表达式来定位日期和时间,然后选择它们之前的内容。然而,这里的月份(即三月,六月,二月等)的长度不同。
sample 1:
Mike Alley
26 February 2005 12:12 AM
50 grams of tobacco
sample 2:
Pichy Lop Annz
22 June 2001 02:06 PM
Lighter and cigar
...
...
...
实现目标的最佳方法是什么?
答案 0 :(得分:3)
如果字符串始终采用此格式,则只需使用以下内容:
s.splitlines()[0]
如果可能,您可能在包含名称的行前面有空行:
s.strip().splitlines()[0]
答案 1 :(得分:1)
您可以尝试下面的内容。
>>> s = '''
Mike Alley
26 February 2005 12:12 AM
50 grams of tobacco
sample 2:
Pichy Lop Annz
22 June 2001 02:06 PM
Lighter and cigar
...'''
>>> re.findall(r'(?m)^(\S.*\S)\s*\n\s*\d{1,2}\s+\S+\s+\d{4}\s+\d{1,2}:\d{1,2}\s+[AP]M', s)
['Mike Alley', 'Pichy Lop Annz']