Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用正则表达式拾取文本_Python_Regex - Fatal编程技术网

Python使用正则表达式拾取文本

Python使用正则表达式拾取文本,python,regex,Python,Regex,我目前正在使用字符串的拾音器 字符串包含3行,第一行是人名(始终),第二行是日期和时间(固定格式),第三行是注释(可以以数字和字母开头)。中间有空行 我想要的只是名字。所以我想用正则表达式来定位日期和时间,然后选择它们前面的内容。然而,这里的月份长度(即3月、6月、2月等)不同 sample 1: Mike Alley 26 February 2005 12:12 AM 50 grams of tobacco sample 2: Pichy Lop Annz 22 June 20

我目前正在使用字符串的拾音器

字符串包含3行,第一行是人名(始终),第二行是日期和时间(固定格式),第三行是注释(可以以数字和字母开头)。中间有空行

我想要的只是名字。所以我想用正则表达式来定位日期和时间,然后选择它们前面的内容。然而,这里的月份长度(即3月、6月、2月等)不同

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
...
...
...

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

如果字符串始终采用这种格式,您可以简单地使用以下内容:

s.splitlines()[0]
如果可能,在包含名称的行之前可能有空行:

s.strip().splitlines()[0]

如果字符串始终采用此格式,则可以简单地使用以下内容:

s.splitlines()[0]
如果可能,在包含名称的行之前可能有空行:

s.strip().splitlines()[0]

你可以试试下面的

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

你可以试试下面的

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

@hwnd,是的。@hwnd,谢谢你的关注。只有一个名字,总是第一行。我的问题也可能是:如何选择第一行的字符串?@hwnd,你当然是一个性感的国王。你介意把它作为一个有利于所有人的答案吗?谢谢。如果第一行是空的怎么办?@Avinash Raj,问得好。@hwnd,是的。@hwnd,谢谢你的关注。只有一个名字,总是第一行。我的问题也可能是:如何选择第一行的字符串?@hwnd,你当然是一个性感的国王。你介意把它作为一个有利于所有人的答案吗?谢谢。如果第一行是空的怎么办?@Avinash Raj,问题很好。请注意,每个字符串只包含三行,因此一个字符串中没有两个名称。是的,它会选择日期行之前存在的行。发布否决投票的原因。我根据这个
使用了上面的正则表达式,所以我想使用正则表达式来定位日期和时间,然后选择它们前面的内容
语句。允许op学习正则表达式。请注意,无法使用内置工具完成所有操作。请注意,每个字符串仅包含三行,因此一个字符串中没有两个名称。是的,它将选择日期行之前存在的行。请张贴向下投票的原因。我根据这个
使用了上面的正则表达式,所以我想使用正则表达式来定位日期和时间,然后选择它们前面的内容
语句。允许op学习正则表达式。请注意,你不能使用内置工具完成所有工作。你的工具最方便、最直接。希望你不介意我在下面选择适合你的学习方式。你的方式最方便、最直接。希望你不介意我在下面选择适合“re”学习方式的。