Python - 读取包含字符串和整数的文件
Python - Read a file with strings and integers
我正在尝试读取 Python 中包含 4 列和多行的文本文件。这个文件有字符串和浮点数。但是一旦我加载它,这个文件 returns 一个二维列表,其中仅包含字符串格式的所有项目的一列。
我想要的输出与 filedemo 显示的完全一样。注意:我需要一种不需要 pandas,只需要列表或 NumPy 数组的方法。任何对此的帮助将不胜感激!
filedemo = [['name','name','name'],[1,2,3],['name','name','name'], [4,5,6], ['other','other','other']]
# Using open() #
with open('filedemo.txt') as nkFile:
lines = [line.strip().split() for line in nkFile]
print(lines)
打开输出()[['name','name','name'],['1','2','3'],['name','name','name'], ['4','5','6'], ['other','other','other']]
# Using readlines()#
f = open('filedemo.txt', "r")
new = f.readlines()
print(new)
带 READLINES 的输出()
[['name,name,name\n'],['1,2,3\n'],['name,name,name\n'], ['4,5,6\n'], ['other,other,other\n']]
当我们读取 Python 中的任何文件时,它会读入字符串数据类型。如果我们想在读取数据后分配适当的数据,请开始使用 ast.literal_eval() 方法。
data = ast.literal_eval('[['name','name','name'],['1','2','3'],['name','name','name'], ['4','5','6'], ['other','other','other']]')
输出将是列表数据类型
[['name','name','name'],['1','2','3'],['name','name','name'], ['4','5','6'], ['other','other','other']]
不清楚 filedemo 到底是什么样子。我怀疑你的 split()
命令真的应该是 split(',')
。所以我假设 filedemo 是这样的:
name,name,name
1,2,3
name,name,name
4,5,6
other,other,other
并且我假设您的 open...nkFile
解决方案存在问题,即完成后数字仍然是字符串。
这是一种通过 lines
并清理它的蛮力方法:
lines = [['name','name','name'],['1','2','3'],['name','name','name'], ['4','5','6'], ['other','other','other']]
for i, innerlist in enumerate(lines):
for j, item in enumerate(innerlist):
try:
lines[i][j] = int(float(item))
except ValueError:
continue
print(lines)
输出为:
[['name', 'name', 'name'], [1, 2, 3], ['name', 'name', 'name'], [4, 5, 6], ['other', 'other', 'other']]
此代码尝试将嵌套列表中的每个条目转换为整数。如果它因 ValueError 而失败,我们将忽略并继续。此解决方案使用(非常方便的)枚举函数来给出列表中每个元素的索引和项目。
我正在尝试读取 Python 中包含 4 列和多行的文本文件。这个文件有字符串和浮点数。但是一旦我加载它,这个文件 returns 一个二维列表,其中仅包含字符串格式的所有项目的一列。 我想要的输出与 filedemo 显示的完全一样。注意:我需要一种不需要 pandas,只需要列表或 NumPy 数组的方法。任何对此的帮助将不胜感激!
filedemo = [['name','name','name'],[1,2,3],['name','name','name'], [4,5,6], ['other','other','other']]
# Using open() #
with open('filedemo.txt') as nkFile:
lines = [line.strip().split() for line in nkFile]
print(lines)
打开输出()[['name','name','name'],['1','2','3'],['name','name','name'], ['4','5','6'], ['other','other','other']]
# Using readlines()#
f = open('filedemo.txt', "r")
new = f.readlines()
print(new)
带 READLINES 的输出()
[['name,name,name\n'],['1,2,3\n'],['name,name,name\n'], ['4,5,6\n'], ['other,other,other\n']]
当我们读取 Python 中的任何文件时,它会读入字符串数据类型。如果我们想在读取数据后分配适当的数据,请开始使用 ast.literal_eval() 方法。
data = ast.literal_eval('[['name','name','name'],['1','2','3'],['name','name','name'], ['4','5','6'], ['other','other','other']]')
输出将是列表数据类型
[['name','name','name'],['1','2','3'],['name','name','name'], ['4','5','6'], ['other','other','other']]
不清楚 filedemo 到底是什么样子。我怀疑你的 split()
命令真的应该是 split(',')
。所以我假设 filedemo 是这样的:
name,name,name
1,2,3
name,name,name
4,5,6
other,other,other
并且我假设您的 open...nkFile
解决方案存在问题,即完成后数字仍然是字符串。
这是一种通过 lines
并清理它的蛮力方法:
lines = [['name','name','name'],['1','2','3'],['name','name','name'], ['4','5','6'], ['other','other','other']]
for i, innerlist in enumerate(lines):
for j, item in enumerate(innerlist):
try:
lines[i][j] = int(float(item))
except ValueError:
continue
print(lines)
输出为:
[['name', 'name', 'name'], [1, 2, 3], ['name', 'name', 'name'], [4, 5, 6], ['other', 'other', 'other']]
此代码尝试将嵌套列表中的每个条目转换为整数。如果它因 ValueError 而失败,我们将忽略并继续。此解决方案使用(非常方便的)枚举函数来给出列表中每个元素的索引和项目。