使用特定字符在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', '.']
谢谢!
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()
方法是根据你给它的完整字符串来进行分割的,而不是根据字符串里的每个字符来分割。如果你传入 "[]"
,它会在出现 []
的地方进行分割,而不会在单独的方括号上分割。解决这个问题的方法有:
分割两次:
words = [z for y in x.split("[") for z in y.split("]")]
使用
re.split()
方法。
11
你可以试试用 re.split()
来实现:
>>> import re
>>> re.split(r"[\[\]]", "I need to [go out] to lunch")
['I need to ', 'go out', ' to lunch']
这个看起来有点奇怪的正则表达式 [\[\]]
是一个字符类,它的意思是可以在 左方括号 [
或 右方括号 ]
的地方进行分割。内部的 \[
和 \]
前面加了反斜杠,是因为它们和 [
以及 ]
使用的是同样的字符来包围这个字符类。