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 而失败,我们将忽略并继续。此解决方案使用(非常方便的)枚举函数来给出列表中每个元素的索引和项目。