我有一些格式的文件创建时间数据。
Thu Jan 2 17:05:37 2020
Thu Feb 27 11:17:14 2020
我只想从输出中的该字符串(一月,二月)中提取月份,然后删除其他字符串。
我尝试了以下正则表达式
^\S*\s+(\S+)
它给我的输出是(Thu Feb),但我只需要月份部分。
答案 0 :(得分:1)
另一种方法是让dateutil
为您解析:
import dateutil.parser as dparser
l = ['Thu Jan 2 17:05:37 2020', 'Thu Feb 27 11:17:14 2020']
months = [dparser.parse(i, fuzzy=True).strftime("%b") for i in l]
months
输出:
['Jan', 'Feb']
答案 1 :(得分:0)
您可以尝试split()
L="Thu Jan 2 17:05:37 2020"
print(L.split()[1])
答案 2 :(得分:0)
import re
str = "Thu Jan 2 17:05:37 2020"
print(re.sub("^\S*\s+(\S+)\s.*", r"\1", str))
礼物:
Jan
答案 3 :(得分:0)
您的问题与您的要求不同。如果您只寻找空格,那么它可能会出现几个月的错误行为。如果您想提取月份,我会为您写一个简单的小片段。
import calendar
import re
months=[calendar.month_abbr[i] for i in range(1,13)]
txt=["Thu Jan 2 17:05:37 2020","Thu Feb 27 11:17:14 2020"]
for j in txt:
print([(j,i) for i in months if len(re.findall(i,j))>0])
输出:
[('Thu Jan 2 17:05:37 2020', 'Jan')]
[('Thu Feb 27 11:17:14 2020', 'Feb')]
答案 4 :(得分:0)
这是一个相当简单的解决方案:
import re
str = "Thu Jan 2 17:05:37 2020"
print(re.match("^\S{3}\ (\S{3})", str).group(1))
输出:“ Jan”
无需处理原始字符串。
答案 5 :(得分:-1)
您已经捕获了月份,为什么不使用它呢?
enter code here
str =“ 2020年1月2日星期四17:05:37
enter code here
p = r“ ^ \ S * \ s +(\ S +)\ s。*”
enter code here
t = re.search(p,str)
enter code here
print(“ $ 1:”,t.group(1))