2011-11-20 83 views
1

我试图在特定字符处分割输入文档。我需要在[和]分裂他们,但我很难搞清楚这一点。使用特定字符在Python中分割字符串

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', '.'] 

谢谢!

+0

你可以给你使用的输入采样线? –

回答

6

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

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

的古怪的正则表达式[\[\]]是一个字符类,这意味着在要么[]分裂。内部\[\]必须反斜线转义,因为它们使用与[]相同的字符环绕字符类。

2

str.split()分割您传递给它的确切字符串,而不是其任何字符。通过"[]"将在出现[]时分裂,但不在个别括号内。可能的解决方案是

  1. 分裂两次:

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

+1

第一个工作,但有没有办法保留括号? – user1044868

0

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

您需要使用从re module拆分(S),这将把S作为一个正则表达式

import re 

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