使用循环从文件中读取和提取有用数据无法生成值列表

Reading and extracting useful data from a file with a loop fails to produce a list of values

我正在读取一个包含一些数据的文件。我希望将数据分成几个类别并将它们写入自己的文件中(例如整数,如 phone 数字;小数;单个单词;和单独的句子)。

def data_reading():
    data = []
    integers = []
    with open("my_lines.txt") as file:
        for row in file:
            row = row.strip().replace("\n", "")
            data.extend(row.split(","))
        for values in data:
            if values.isnumeric():
                print(values + " - integer")
                integers.extend(row.split(","))
            elif values.isalpha():
                print(values + " - alphabetical strings")
            elif values.isalnum():
                print(values + " - alphanumeric")
            else:
                print(values + " - float")          
    return integers

somethin = data_reading()
print(somethin)

如果我要输入 123、abc、Address unknown、20.12.85 之类的行,我的目标是获取 4 个列表来存储值并使用它们写入具有单独写入功能的 4 个文件。但是,现在我只存储最后一个浮点值,次数与我正在读取的数据文件中的行数一样多(我试图用 isnumerical() 获取数字)。怎么来的?我好像漏掉了什么。

您有两个单独的 for 循环,当您将整数放入列表中时,您已经遍历了文件中的所有行,因此 row 指向最后一行,即“20.12.85” .

请改用 integers.append(values)(如果要存储实际整数,则使用 integers.append(int(values)))。

像这样:

def data_reading():
    data = []
    integers = []
    with open("my_lines.txt") as file:
        for row in file:
            row = row.strip().replace("\n", "")
            data.extend(row.split(","))
        for value in data:
            if value.isnumeric():
                print(value + " - integer")
                integers.append(value)
            elif value.isalpha():
                print(value + " - alphabetical strings")
            elif value.isalnum():
                print(value + " - alphanumeric")
            else:
                print(value + " - float")
    return integers

somethin = data_reading()
print(somethin)