Python使用正则表达式来选择文本

时间:2015-02-25 03:49:37

标签: python regex

我目前正在处理字符串中的拾音器。

一个字符串包含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
...
...
...

实现目标的最佳方法是什么?

2 个答案:

答案 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']