Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有两个分隔符的Python拆分字符串_Python_String_Split - Fatal编程技术网

具有两个分隔符的Python拆分字符串

具有两个分隔符的Python拆分字符串,python,string,split,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().

我想知道如何使用多个分隔符拆分字符串。如果一个是空格,我在拆分时遇到问题

我正在尝试读取包含以下内容的文本文件:

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
您可以使用:

这相当于拆分初始输入,然后在第二个分隔符上拆分每个结果。最后,你

作为一个单行程序,您需要的是:

[item for sublist in [word.split(' ') for word in x.strip().split(';')] for item in sublist]
您可以使用:

这相当于拆分初始输入,然后在第二个分隔符上拆分每个结果。最后,你

作为一个单行程序,您需要的是:

[item for sublist in [word.split(' ') for word in x.strip().split(';')] for item in sublist]
您可以使用
进行拆分|,如下所示:

import re

x = '22.0;2016-01-16 00:16:18'
print re.split(';| ', x)
这将打印
['22.0','2016-01-16','00:16:18']

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

import re

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

这张打印的
['22.0','2016-01-16','00:16:18']
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']
使用可能更优雅的
(而不是
如果
)语法:


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']
使用可能更优雅的
(而不是
如果
)语法:


您可以使用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
演示:


您可以使用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
演示:


你的预期产出是多少?这是关键信息!是的可能重复对不起我忘了[21.7',2016-01-15 23:33:54']您的预期产量是多少?这是关键信息!很抱歉,我忘记了[21.7',2016-01-15 23:33:54']现在添加
re
1行代码。:)对于这样一个简单的任务,它是非常详细的解决方案现在添加
re
一行代码。:)对于这样一个简单的任务,这是一个非常详细的解决方案。谢谢,它非常有效。我刚刚添加了.strip(),使它像我想感谢的那样工作。没有问题!您可以添加,例如,
;| ||-添加到正则表达式中。谢谢,它非常有效。我刚刚添加了.strip(),使它像我想感谢的那样工作,没有问题!您可以添加,例如,
;| ||-添加到正则表达式。