我想知道如何使用多个分隔符拆分字符串。如果一个是太空,我有分裂的问题吗?
我试图读取具有以下内容的文本文件:
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
答案 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']