使用特定字符在Python中拆分字符串

时间:2011-11-20 18:31:09

标签: python split

我正在尝试将输入的文档拆分为特定字符。我需要在[和]分开它们,但我很难搞清楚这一点。

def main():
for x in docread:
    words = x.split('[]')
    for word in words:
        doclist.append(word)

这是将它们分成我的列表的代码的一部分。但是,它返回文档的每一行。

例如,我想转换

['I need to [go out] to lunch', 'and eat [some food].']

['I need to', 'go out', 'to lunch and eat', 'some food', '.']

谢谢!

3 个答案:

答案 0 :(得分:6)

您可以尝试使用re.split()代替:

>>> import re
>>> re.split(r"[\[\]]", "I need to [go out] to lunch")
['I need to ', 'go out', ' to lunch']

奇怪的正则表达式[\[\]]是一个字符类,意味着在上分割 []。内部\[\]必须使用反斜杠转义,因为它们使用与[]相同的字符来包围字符类。

答案 1 :(得分:2)

str.split()会在传递给它的完全字符串处拆分,而不是在其任何字符处。传递"[]"会在[]出现时分开,但不会在单独的括号中分开。可能的解决方案是

  1. 分裂两次:

    words = [z for y in x.split("[") for z in y.split("]")]
    
  2. 使用re.split()

答案 2 :(得分:0)

string.split(s),您正在使用的那个,将's'的整个内容视为分隔符。换句话说,你输入应该看起来像“[]'我需要[]出去[]吃午餐',然后吃[]一些食物[]。'[]”为它给你结果你想。

你需要使用re module中的split,它将s视为正则表达式

import re

def main():
for x in docread:
    words = re.split('[]', x)
    for word in words:
        doclist.append(word)