簡體   English   中英

在字符串python中搜索文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM