读取文本文件中的行并将其转换为字符串列表

时间:2017-11-07 11:49:30

标签: python python-3.x

我有一个包含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。

编辑:感谢所有答案。我相信所有这些都有效。但有人可以告诉我自己尝试的代码有什么问题吗?感谢。

3 个答案:

答案 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']