Python中“AttributeError:”list“object没有属性”“split”“的问题”

2024-09-30 20:28:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,我正试图找出从文本文件中解析某些信息的最佳方法。在

以下是给定文件的外观:

#
0.010000 125 _
0.130000 125 d
0.225000 125 o
0.260000 125 b
0.275000 125 a
0.335000 125 r
0.400000 125 v
0.455000 125 a
0.530000 125 m
0.580000 125 d

标记该文件的请求。
我想从每一行生成三个变量。第一行应该是这样的:

^{pr2}$

因为我和tkinter一起工作,所以我当前的代码是这样的:

    def cutFile(fileAudio, fileTime):
        path = fileAudio.get()
        fileAudioName = os.path.split(path)[1]
        pathTime = fileTime.get()
        fileTimeName = os.path.split(pathTime)[1]
        sound_file = AudioSegment.from_mp3(fileAudioName)
        timeFile = open(pathTime, "r")
        line = timeFile.readlines()
        newLine = line.split("\n")
        for i in range(1, len(newLine)):
            x, y, z = newLine.split(" ")
            print(z)

问题似乎已经从底线开始了

    newLine = line.split("\n")

因为我得到AttributeError:“list”对象没有属性“split”错误。在

如果有人能为我指出正确的方向,或者提出更好的方法,那就太好了。在


Tags: 文件path方法getoslinenewlinesplit
2条回答

试试这个:

lines = timeFile.readlines()
for x, l in enumerate(lines):
    if l.strip() == '#':
        break
else
    raise TypeError("invalid file content, missing '#' line")

for i in range(x + 1, len(lines), 1):
    l = lines[i]
    x, y, z = l.split()
    print(z)

这是怎么回事?打开后,通过调用timeFile.readlines()读取文件。这将返回行的列表。因此,首先我们寻找只包含#的“起始”行。我们去掉空白,因为我们通常不想处理它们,“#”和“#”看起来几乎一样,在手工编辑的文件中很容易丢失。找到那一行之后,我们从下一行迭代到文件的末尾,对于每一行l,我们通过调用split()和打印z来拆分它。在

使用:

with open(pathTime) as infile:                #Open file for read
    next(infile)   #Skip #                   
    for line in infile:                       #Iterate Each line
        x, y, z = line.strip().split(" ")     #Strip leading and trailing space and split
        print(x, y, z)

输出:

^{pr2}$

在代码中,您不需要newLine = line.split("\n"),因为readlines()已经按\n分割了文件的内容

例如:

timeFile = open(filename, "r")
lines = timeFile.readlines()

for line in lines[1:]:
    x, y, z = line.strip().split(" ")
    print(z)

相关问题 更多 >