【问题标题】:Can two conditions be given for python's string.split function? [duplicate]python的string.split函数可以给出两个条件吗? [复制]
【发布时间】:2012-02-09 02:34:09
【问题描述】:

可能重复:
Python: Split string with multiple delimiters

我有一个程序,我在其中按每一行解析文件并将其分成两半。之后,对于每一半,我都会解析该行中的每个单词并将其附加到一个列表中。

这里的 mfcList1 是来自文本文件的行列表。我正在解析行中由逗号或空格分隔的每个单词。但它并不完全有效。

for lines in mfcList1:
        lines = lines.lstrip()
        if lines!='':
            p.append(string.split(lines,','or " "))
mfcList2 = reduce(lambda x,y:x+y,p)

print mfcList2

当我使用 string.split 时,它只处理那些以逗号结尾的元素,它忽略了我在 split 方法中使用的 or 运算符。我想从行中切掉每一个字。它们以逗号或空格结尾。

例如。 'enableEmergencySpare=1 useGlobalSparesForEmergency=1 useUnconfGoodForEmergency=1',

这一行被存储为单个列表元素,我正在尝试使用 split 方法将它们拆分..

任何人都可以建议我可以做什么而不是使用或操作员...谢谢..

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以使用re 模块中的split()

    import re
    ...
    p.extend(re.split('[ ,]', lines))
    

    [ ,]regular expression,意思是“空格或逗号”。此外,假设p 是一个列表,并且您想将所有单词添加到其中,您应该使用extend() 而不是append(),后者添加单个元素。

    另请注意,如果文件中的一行包含命令后跟空格(或其他逗号和空格序列),您的列表 p 将包含相应数量的空字符串。

    【讨论】:

    • 它没有以列表格式显示输出。我希望将输出作为列表..它只是将输出显示为以空格分隔的单词,而不是作为列表显示。
    • 嗯,是的,因为您将列表中的所有元素与reduce() 组合在一起。如果您不想这样做,请不要调用reduce(),而只需显示循环中填充的列表(即p)。
    • 它仍在打印相同的内容。它只需要, enableEmergencySpare=1 useGlobalSparesForEmergency=1 useUnconfGoodForEmergency=1
    • 我想我现在明白了.. 感谢您的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2020-06-04
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 2019-05-11
    相关资源
    最近更新 更多