簡體   English   中英

在字符串python中的字符之前和之后獲取特定的子字符串

[英]get a specific substring after and before a character in a string python

我想從解密字符串中分出時間。 desc可以具有以下字符串:

desc = '08:59 Hudh aes ....' 
desc = '19:59Aksi jeh....' 
desc = 'just letters without time'
desc = '21.19:55Aksi hsue....'
desc = '256.08:59Aksi mane....'

time包含我要查找的10個描述的首字母:然后在它之前和之后取兩個數字,因此我可以分配時間

time = ''.join(filter(lambda x: x, desc[0:10].replace(" " , "")))
print  "Time:" , time , time.rsplit(':', 1)[0]

time.rsplit(':', 1)[0]返回之前的所有數字:

time.rsplit(':', 1)[0]返回以下所有數字:

如何界定之后且只有兩個數字拆分: ?這是一個好辦法嗎? 我嘗試過使用regex是更好的主意,但這有點復雜嗎?

您可以嘗試re.finditer()

 test = """desc = '08:59 Hudh aes ....' 
 desc = '19:59Aksi jeh....' 
 desc = 'just letters without time'
 desc = '21.19:55Aksi hsue....'
 desc = '256.08:59Aksi mane....'
 """
 pattern = r"\d{2}:\d{2}"
 for m in re.finditer(pattern,test):
    print m.group()

輸出將是:

08:59
19:59
19:55
08:59

然后,從此輸出中,您可以輕松地拆分小時和分鍾

如何定義在之后和之前僅拆分兩個數字:

使用正則表達式; 以下正則表達式模式正好匹配2位數字,后跟一個冒號,再恰好兩位數(這實際上是您要的):

import re

desc = '21.19:55Aksi hsue....'
m = re.search(r'(\d{2}):(\d{2})', desc)
if m:
    hour, min = m.groups()
else:
    # no time in desc string
    pass
print 'hour = {}, min = {}'.format(hour, min)

產量

hour = 19, min = 55

您可以re.findall()

re.findall(r'([\d.]+):([\d.]+)',desc)

如果字符串彼此分開,則可以使用如下的re.search方法:

import re
[hour, min, desc] = re.search(r'(?:(?:\d+\.)?(\d{2}):(\d{2}))?[ \t]*(.*)',desc).groups()

# --
# desc  = '08:59 Hudh aes ....'
# hour -> '08'
# min  -> '59'
# desc -> 'Hudh aes ....', the space before the description are stripped too
# --
# desc  = '19:59Aksi jeh....'
# hour -> '19'
# min  -> '59'
# desc -> 'Aksi jeh....'
# --
# desc  = 'just letters without time'
# hour -> None
# min  -> None
# desc -> 'just letters without time'
# --
# desc = '256.08:59Aksi mane....'
# hour -> '08'
# min  -> '59'
# desc -> 'Aksi mane....'

在線正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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