[英]Search text in string python
我有以下字符串
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。
這應該做。
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")
在Python為什么'\\ x'無效中閱讀有關\\x
更多信息。
您可以使用正則表達式 :
import re
a = re.search("16 April", "sample string")
print a.group(0)
最后一條語句或者返回“4月16日”如果是字符串或無中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.