split 的输出不是我所期望的
Output of split is not what I was expecting
我刚刚学习 python,但在读取我创建的 .txt 文件时遇到了一些问题。
我的objective:
我有一个包含字符串列表的 txt 文件。我正在尝试阅读、处理它并将每个字母保存到一个新列表中。
example2.txt 文件:
[one, two, THREE, one, two, ten, eight,cat, dog, bird, fish] [Alonso, Alicia, Bob, Lynn] , [red, blue, green, pink, cyan]
我的输出
['one, two, THREE, one, two, ten, eight, cat, dog, bird, fish]\n']
['Alonso, Alicia, Bob, Lynn], [red, blue, green, pink, cyan']
我期待的是这样的:
['one','two','THREE','one','two','ten','eight','cat','dog','bird','fish','Alonso','Alicia','Bob','Lynn','red','blue','green','pink','cyan']
我的代码在python
这就是我尝试过的;你可以忽略评论
import re
# Creating a variable to store later the contents of the file
list_String = []
# Reading the file
file = open("D:\dir\example2", "r")
for line in file:
print(re.split('^[\s].', line.strip(' ][')))
#list_String.append(line.strip('[]').strip("\n").split(","))
#list_String = re.split(r'[^\S\t.]', line)
#print(line.split(r"\S"))
#print(line)
#print(list_String)
file.close()
我也在看文档re,但不知道是不是我一个人,还是很难理解。
我尝试对我阅读的内容进行试验,但我仍然没有得到我想要的。
我什至试过这个:
print(line.strip('][').strip('\n').strip(']').split(","))
输出
['one', ' two', ' THREE', ' one', ' two', ' ten', ' eight', 'cat', ' dog', ' bird', ' fish']
['Alonso', ' Alicia', ' Bob', ' Lynn] ', ' [red', ' blue', ' green', ' pink', ' cyan']
如您所见,它有点管用。然而,在 Lynn 和 red 之间,大括号和逗号并没有消失。
感谢您的宝贵时间和帮助
您可能会发现在模式 \w+
上执行 re.findall
在这里有效:
inp = "[one, two, THREE, one, two, ten, eight,cat, dog, bird, fish] [Alonso, Alicia, Bob, Lynn] , [red, blue, green, pink, cyan]"
words = re.findall(r'\w+', inp)
print(words)
这会打印:
['one', 'two', 'THREE', 'one', 'two', 'ten', 'eight', 'cat', 'dog', 'bird', 'fish',
'Alonso', 'Alicia', 'Bob', 'Lynn', 'red', 'blue', 'green', 'pink', 'cyan']
我刚刚学习 python,但在读取我创建的 .txt 文件时遇到了一些问题。 我的objective: 我有一个包含字符串列表的 txt 文件。我正在尝试阅读、处理它并将每个字母保存到一个新列表中。
example2.txt 文件:
[one, two, THREE, one, two, ten, eight,cat, dog, bird, fish] [Alonso, Alicia, Bob, Lynn] , [red, blue, green, pink, cyan]
我的输出 ['one, two, THREE, one, two, ten, eight, cat, dog, bird, fish]\n'] ['Alonso, Alicia, Bob, Lynn], [red, blue, green, pink, cyan']
我期待的是这样的:
['one','two','THREE','one','two','ten','eight','cat','dog','bird','fish','Alonso','Alicia','Bob','Lynn','red','blue','green','pink','cyan']
我的代码在python 这就是我尝试过的;你可以忽略评论
import re
# Creating a variable to store later the contents of the file
list_String = []
# Reading the file
file = open("D:\dir\example2", "r")
for line in file:
print(re.split('^[\s].', line.strip(' ][')))
#list_String.append(line.strip('[]').strip("\n").split(","))
#list_String = re.split(r'[^\S\t.]', line)
#print(line.split(r"\S"))
#print(line)
#print(list_String)
file.close()
我也在看文档re,但不知道是不是我一个人,还是很难理解。
我尝试对我阅读的内容进行试验,但我仍然没有得到我想要的。
我什至试过这个:
print(line.strip('][').strip('\n').strip(']').split(","))
输出
['one', ' two', ' THREE', ' one', ' two', ' ten', ' eight', 'cat', ' dog', ' bird', ' fish']
['Alonso', ' Alicia', ' Bob', ' Lynn] ', ' [red', ' blue', ' green', ' pink', ' cyan']
如您所见,它有点管用。然而,在 Lynn 和 red 之间,大括号和逗号并没有消失。
感谢您的宝贵时间和帮助
您可能会发现在模式 \w+
上执行 re.findall
在这里有效:
inp = "[one, two, THREE, one, two, ten, eight,cat, dog, bird, fish] [Alonso, Alicia, Bob, Lynn] , [red, blue, green, pink, cyan]"
words = re.findall(r'\w+', inp)
print(words)
这会打印:
['one', 'two', 'THREE', 'one', 'two', 'ten', 'eight', 'cat', 'dog', 'bird', 'fish',
'Alonso', 'Alicia', 'Bob', 'Lynn', 'red', 'blue', 'green', 'pink', 'cyan']