寻找一种优雅的方式来:
例如,我确实有日期和时间数据,例如:
D2018-4-21T3:55+6
2018-4-4T3:15+6
D2018-11-21T12:45+6:30
有时会有D,有时没有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特殊序列进行匹配,如下所述。要匹配文字'('或')',请使用(或),或将它们括在字符类中:[(],[)]。
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']
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句