使用特定字符在Python中切割字符串

5 投票
3 回答
37032 浏览
提问于 2025-04-17 06:42

我正在尝试在特定字符处拆分输入的文档。我需要在 [ 和 ] 这两个字符处进行拆分,但我有点难以搞清楚该怎么做。

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

你使用的string.split(s)方法会把's'的整个内容当作分隔符。换句话说,你输入的内容应该像这样:“[]'我需要[]出去[]吃午饭','然后吃[]一些食物[].'[]”这样,才能得到你想要的结果。

你需要使用来自re模块的split(s)方法,这样它会把s当作正则表达式来处理。

import re

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

str.split() 方法是根据你给它的完整字符串来进行分割的,而不是根据字符串里的每个字符来分割。如果你传入 "[]",它会在出现 [] 的地方进行分割,而不会在单独的方括号上分割。解决这个问题的方法有:

  1. 分割两次:

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

11

你可以试试用 re.split() 来实现:

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

这个看起来有点奇怪的正则表达式 [\[\]] 是一个字符类,它的意思是可以在 左方括号 [右方括号 ] 的地方进行分割。内部的 \[\] 前面加了反斜杠,是因为它们和 [ 以及 ] 使用的是同样的字符来包围这个字符类。

撰写回答