使用循环从文件中读取和提取有用数据无法生成值列表
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)
我正在读取一个包含一些数据的文件。我希望将数据分成几个类别并将它们写入自己的文件中(例如整数,如 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)