簡體   English   中英

如何根據分隔符拆分 python 中的字符串,分隔符作為其中一個塊的一部分?

[英]How to split a string in python based on separator with separator as a part of one of the chunks?

尋找一種優雅的方式:

  1. 根據分隔符拆分字符串
  2. 而不是丟棄分隔符,使其成為拆分塊的一部分。

例如,我確實有日期和時間數據,例如:

D2018-4-21T3:55+6
2018-4-4T3:15+6
D2018-11-21T12:45+6:30

有時有 D,有時沒有(但我總是希望它成為第一個塊的一部分),時間和時區沒有尾隨或前導零,有時只有 ':'。 重點是,有必要對這些“D、T、+”字符進行拆分,因為這些字符可能不遵循 sae 長度。 如果是這樣,則僅基於索引進行拆分會更容易。 我想將它們拆分為多個字符,例如 T 和 + 並將它們作為數據的一部分,例如:

['D2018-4-21', 'T3:55', 'TZ+6']
['D2018-4-4', 'T3:15', 'TZ+6']
['D2018-11-21', 'T12:45', 'TZ+6:30']

我知道一個更好的方法是首先清理數據並將所有行標准化以遵循相同的模式,但只是好奇如何做到這一點

現在我丑陋的解決方案看起來像:

[i+j for _, i in enumerate(['D','T','TZ']) for __, j in enumerate('D2018-4-21T3:55+6'.replace('T',' ').replace('D', ' ').replace('+', ' +').split()) if _ == __]

使用regular expression

參考: https://docs.python.org/3/library/re.html

(...)

匹配括號內的任何正則表達式,並指示組的開始和結束; 組的內容可以在執行匹配后檢索,並且可以稍后在字符串中使用 \number 特殊序列進行匹配,如下所述。 要匹配文字 '(' 或 ')',請使用 ( 或 ),或將它們括在字符 class 中:[(], [)]。

import re
a = '''D2018-4-21T3:55+6
2018-4-4T3:15+6
D2018-11-21T12:45+6:30'''

b = a.splitlines()
for i in b:
    m = re.search(r'^D?(.*)([T].*?)([-+].*)$', i)
    if m:
        print(["D%s" % m.group(1), m.group(2), "TZ%s" % m.group(3)])

結果:

['D2018-4-21', 'T3:55', 'TZ+6']
['D2018-4-4', 'T3:15', 'TZ+6']
['D2018-11-21', 'T12:45', 'TZ+6:30']

暫無
暫無

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

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