The*_*ler 0 python nested file list
我在分割数据文件中的文本时遇到问题,假设数据文件包含:
Row 1
apple
bob
cat
dog
ear
fun
Row 2
glow
horse
idea
joke
kick
lemon
Row 3
money
new
odd
park
queen
run
Run Code Online (Sandbox Code Playgroud)
我想拆分它,使它成为一个嵌套列表,如下所示:
[[apple, bob], [cat, dog], [ear, fun]],
[[glow, horse], [idea, joke], [kick, lemon]],
[[money, new], [odd, park], [queen, run]]
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的工作:
def text_file(data_file):
nested_list = []
main_list = []
my_list = ''
for index in data_file:
index = index.strip()
if (index in my_list):
main_list.append(nested_list)
nested_list = []
else:
nested_list.append(index)
if (nested_list):
main_list.append(nested_list)
return (main_list)
Run Code Online (Sandbox Code Playgroud)
但是这会返回:
text_file(open("data_file.txt", "r"))
[['Row 1', 'apple', 'bob', 'cat', 'dog', 'ear', 'fun'],
['Row 2', 'glow', 'horse', 'idea', 'joke', 'kick', 'lemon'],
['Row 3', 'money', 'new', 'odd', 'park', 'queen', 'run']]
Run Code Online (Sandbox Code Playgroud)
没有进口任何东西,我怎么能做到这一点?如果可能,我可以在代码中添加什么?
您需要做的是将文件拆分\n\n(两个换行符),这将为您提供组,然后逐行拆分结果,然后使用zip相应的步骤来构建您需要的列表,例如:
s = """Row 1
apple
bob
cat
dog
ear
fun
Row 2
glow
horse
idea
joke
kick
lemon
Row 3
money
new
odd
park
queen
run"""
lines = s.split('\n\n')
for line in lines:
words = line.splitlines()
print([ [i, j] for i, j in zip(words[1::2], words[2::2]) ])
[['apple', 'bob'], ['cat', 'dog'], ['ear', 'fun']]
[['glow', 'horse'], ['idea', 'joke'], ['kick', 'lemon']]
[['money', 'new'], ['odd', 'park'], ['queen', 'run']]
Run Code Online (Sandbox Code Playgroud)