我正在尝试将输入的文档拆分为特定字符。我需要在[和]分开它们,但我很难搞清楚这一点。
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']
奇怪的正则表达式[\[\]]
是一个字符类,意味着在上分割 [
或]
。内部\[
和\]
必须使用反斜杠转义,因为它们使用与[
和]
相同的字符来包围字符类。
答案 1 :(得分:2)
str.split()
会在传递给它的完全字符串处拆分,而不是在其任何字符处。传递"[]"
会在[]
出现时分开,但不会在单独的括号中分开。可能的解决方案是
分裂两次:
words = [z for y in x.split("[") for z in y.split("]")]
使用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)