我有一个包含2行文字的文本文件data.txt
。
first_row_1 first_row_2 first_row_3
second_row_1 second_row_2 second_row_3
我想读取文本文件的第二行,并将内容转换为python中的字符串列表。列表应如下所示;
txt_list_str=['second_row_1','second_row_2','second_row_3']
这是我尝试过的代码;
import csv
with open('data.txt', newline='') as f:
reader = csv.reader(f)
row1 = next(reader)
row2 = next(reader)
my_list = row2.split(" ")
我收到错误AttributeError: 'list' object has no attribute 'split'
我使用的是python v3。
编辑:感谢所有答案。我相信所有这些都有效。但有人可以告诉我自己尝试的代码有什么问题吗?感谢。
答案 0 :(得分:3)
您的代码不起作用的原因是您尝试在列表中使用split
,但它意味着在字符串上使用。因此,在您的示例中,您将使用row2[0]
来访问列表的第一个元素。
my_list = row2[0].split(" ")
或者,如果您有权访问numpy
库,则可以使用loadtxt。
import numpy as np
f = np.loadtxt("data.txt", dtype=str, skiprows=1)
print (f)
# ['second_row_1' 'second_row_2' 'second_row_3']
这是一个数组而不是列表。如果需要列表,可以简单地将数组转换为列表
print (list(f))
#['second_row_1', 'second_row_2', 'second_row_3']
答案 1 :(得分:2)
使用读取文件方法打开文件。
<强> E.g。强>
>>> fp = open('temp.txt')
使用文件内置生成器通过 next 方法迭代行,并忽略第一行。
>>> next(fp)
'first_row_1 first_row_2 first_row_3)\n'
获取任何变量的第二行。
>>> second_line = next(fp)
>>> second_line
'second_row_1 second_row_2 second_row_3'
使用拆分字符串方法获取列表中的项目。 split方法取一个或零参数。如果没有给他们分开使用白色空间进行拆分。
>>> second_line.split()
['second_row_1', 'second_row_2', 'second_row_3']
最后关闭文件。
fp.close()
注意:有多种方法可以获得相应的输出。 但是你应该首先尝试,正如DavidG在评论中说的那样。
答案 2 :(得分:0)
with open("file.txt", "r") as f:
next(f) # skipping first line; will work without this too
for line in f:
txt_list_str = line.split()
print(txt_list_str)
输出
['second_row_1', 'second_row_2', 'second_row_3']