Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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,因此,我一直在尝试提取文本文件中“点”字符后面的字符串,但仅针对以下模式的行,即日期和时间之后的行: 2018年5月9日上午10:37•下午6点,珀斯(上午) 问题是,对于这些行中的每一行,日期和时间都会发生变化,因此唯一常见的模式是在“点”之前有AM或PM 但是,如果我搜索“AM”或“PM”,它将不会识别这些行,因为“AM”和“PM”附加在时间上 这是我当前的代码: 你知道怎么解决这个问题吗?多谢各位 如果要提取日期时间,请尝试使用正则表达式 Ex: import re s = "09 Ma

因此,我一直在尝试提取文本文件中“点”字符后面的字符串,但仅针对以下模式的行,即日期和时间之后的行:

2018年5月9日上午10:37•下午6点,珀斯(上午)

问题是,对于这些行中的每一行,日期和时间都会发生变化,因此唯一常见的模式是在“点”之前有AM或PM

但是,如果我搜索“AM”或“PM”,它将不会识别这些行,因为“AM”和“PM”附加在时间上

这是我当前的代码:


你知道怎么解决这个问题吗?多谢各位

如果要提取日期时间,请尝试使用正则表达式

Ex:

import re

s = "09 May 2018 10:37AM • 6PR, Perth (Mornings)"
m = re.search("(?P<datetime>\d{2}\s+(January|February|March|April|May|June|July|August|September|October|November|December)\s+\d{4}\s+\d{2}\:\d{2}(AM|PM))", s)
if m:
    print m.group("datetime")
09 May 2018 10:37AM

如果您试图提取日期时间,请尝试使用正则表达式

Ex:

import re

s = "09 May 2018 10:37AM • 6PR, Perth (Mornings)"
m = re.search("(?P<datetime>\d{2}\s+(January|February|March|April|May|June|July|August|September|October|November|December)\s+\d{4}\s+\d{2}\:\d{2}(AM|PM))", s)
if m:
    print m.group("datetime")
09 May 2018 10:37AM

我想你的正则表达式是这里的问题

for i, s in enumerate(open(file)):
    if re.findall(r'\d{2}[AP]M', s):
        source = s.split('•')[0]

# 09 May 2018 10:37AM

我想你的正则表达式是这里的问题

for i, s in enumerate(open(file)):
    if re.findall(r'\d{2}[AP]M', s):
        source = s.split('•')[0]

# 09 May 2018 10:37AM

@NguyenTuongBaoKim使用
r'\d{2}[AP]M'
then.@WiktorStribiżew更新代码以包含该重构,谢谢。@NguyenTuongBaoKim使用
r'\d{2}[AP]M'
then.@WiktorStribiżew更新代码以包含该重构,谢谢。因为更改日期时间不会更改给定时间字符串格式的长度。如果s中的'AM•'或s:dt=s[:19]中的'PM•',那么简单地使用包含check with:
的字符串如何?
,因为更改日期时间不会更改给定时间字符串格式的长度。如果s中的'AM•'或s中的'PM•'dt=s[:19]