在字符串python中搜索文本

时间:2013-04-18 17:21:10

标签: python regex datetime text-extraction

我有以下字符串

aaa\bbb\ccc\ddd **16 April**\xyz

日期(在本例中为4月16日)根据事件的开始时间而变化,其余字符串的格式可能会变短或变短(下图)

aaa\bbb\ccc\ddd\**eee** **16 April**\xyz

我希望始终能够选择'4月16日'而不管其余变量的剩余长度。这个日期并不总是'4月16日',而是我被外部计划喂养的任何事件的开始日期。

我想我能做到

if April in 'aaa\bbb\ccc\ddd\**eee** **16 April**\xyz': 
   print 'success'

但我不知道是否有更好的方法......

我需要这样做,所以我可以将日期重新格式化为16-04-2013 ..

2 个答案:

答案 0 :(得分:2)

这应该这样做。

import datetime
import re

# Note the \\x to escape \x
foo = "aaa\bbb\ccc\ddd **16 April**\\xyz"
bar = "aaa\bbb\ccc\ddd\**eee** **1 December**\\xyz"

# Could do \d+ and \w+ aswell, it doesn't seem to matter too much in this situation
pattern = '\*\*(\d{1,2} \w{4,9})\*\*'

# "16 April" etc
foo_format = re.search(pattern, foo).group(1)
bar_format = re.search(pattern, bar).group(1)

year = str(datetime.datetime.now().year)

# Datetime object
foo_date = datetime.datetime.strptime(year + " " + foo_format, "%Y %d %B")
bar_date = datetime.datetime.strptime(year + " " + bar_format, "%Y %d %B")

print foo_date.strftime("%Y-%m-%d")
print bar_date.strftime("%Y-%m-%d")

详细了解Why is '\x' invalid in Python?

中的\x

答案 1 :(得分:0)

您可以使用正则表达式

import re

a = re.search("16 April", "sample string")
print a.group(0)

最后一个语句将返回“4月16日”(如果它在字符串中)或