Python分割字符串,有两个分隔

时间:2016-01-15 23:24:51

标签: python string split

我想知道如何使用多个分隔符拆分字符串。如果一个是太空,我有分裂的问题吗?

我试图读取具有以下内容的文本文件:

  

22.0; 2016-01-16 00:16:18

我知道如何将文本文件读取到变量,但是当我有问题要拆分字符串时我就无法继续了。

我现在拥有的只是这段代码:

with open('datasource_3.txt', 'r') as f:
     data = f.readlines()
     for line in data:
         words = line.strip().split(';')
    print words

4 个答案:

答案 0 :(得分:4)

您可以使用regular expression ;|进行拆分,如下所示:

import re

x = '22.0;2016-01-16 00:16:18'
print re.split(';| ', x)

这会打印['22.0', '2016-01-16', '00:16:18']

答案 1 :(得分:0)

您可以使用list comprehension

[item for sublist in [word.split(' ') for word in x.strip().split(';')] for item in sublist]

这相当于拆分初始输入,然后将每个结果拆分到第二个分隔符上。最后,你'flatten' the list

作为一个单行,这是你正在寻找的:

WebApp.addHtmlAttributeHook(function (request) { return {"ng-app":"helloWorld"}});

答案 2 :(得分:0)

itertools可以提供帮助

import itertools

s = '22.0;2016-01-16 00:16:18'

sp = itertools.chain(*([x] if not i else x.split(' ')
                       for i, x in enumerate(s.split(';'))))

print(list(sp))

输出:

['22.0', '2016-01-16', '00:16:18']

使用可能更优雅的or(而不是if)语法:

sp = itertools.chain(*([x] * (not i) or x.split(' ') for i, x in enumerate(s.split(';'))))

答案 3 :(得分:0)

您可以使用shlex创建自己的解析器:

import shlex

def split_multi(_str, delims="", ws=True):
    parser = shlex.shlex(_str, posix=True)
    parser.whitespace_split = ws
    parser.whitespace += delims
    return pars

演示:

In [15]: sh = split_multi(s, ";")

In [16]: list(sh)
Out[16]: ['22.0', '2016-01-16', '00:16:18']