如何在基于分隔符的python中拆分字符串,其中分隔符是其中一个块的一部分?

哈姆扎

寻找一种优雅的方式来:

  1. 根据分隔符分割字符串
  2. 而不是丢弃分隔符,而是使其成为已拆分块的一部分。

例如,我确实有日期和时间数据,例如:

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 _ == __]
Boying

用一个 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

拆分字符串并将分隔符保留为拆分字符串块的一部分,而不是作为单独的列表元素

c# 使用另一个字符串作为分隔符拆分字符串并将分隔符作为拆分字符串的一部分包含在内

如何拆分字符串,其中一个字符是分隔符,另一个是内容

多个分隔符,并希望使用正则表达式将其中一个分隔符包含在字符串中

在shell中,用点分隔符分割字符串的一部分

Python:如何在字符串拆分结果中包含分隔符并在结果列表中的分隔符前面添加一个单词?

如何在r中提取字符串匹配模式的一部分并带有分隔符

如何在分隔符和輸入到新列之間多次提取字符串的一部分 T-SQL

在最后一次出现分隔符时,如何在bash中获取字符串的第一部分和第二部分

python - 在最后一次出现分隔符之前拆分并获取 str 的一部分

Python re.split()将分隔符的部分保留为第一个字符串的一部分,而其他保留为第二个字符串的一部分,依此类推

当其中一个是管道字符时使用多个分隔符

如何在 AWS Athena 中的最后一个分隔符之前获取部分字符串

在AWK中打印多个字段,但根据不同的分隔符拆分其中一个

如何使用分隔符拆分字符串并获取第一个值

如果分隔符是一个或多个空格,如何拆分字符串?

如何在python中的字符串的每个第n个分隔符添加一个新行?

仅使用 r 中的最后一个分隔符拆分字符串

在多个分隔符上拆分字符串,同时保留一个或多个分隔符

如何替换引号中存在的分隔符值作为文件中数据的一部分

r-使用制表符作为分隔符的一部分

使用 BigQuery SQL 查找字符串的一部分並在分隔符之間提取數據

绘制一个CSV文件,其中分隔符为'; '(分号+空格)

Java解析-分隔符也可以是令牌的一部分

每多个分隔符拆分一个字符串

如何在Pandas中以分隔符分割然后连接以形成一个新字符串呢?

熊猫强迫列基于第一个`k`分隔符字符串

在多个分隔符中的任何一个第一次出现时拆分字符串

将一个char数组拆分为令牌,其中的分隔符为NUL char