Python: 从用字符串写入文件的矩阵中读取特定元素
Python: Read specific element from a matrix written in a file with string
我想从文件中的矩阵读取数据,问题是数据是带有字符串的浮点数,但是,我只对读取浮点数元素感兴趣,
我尝试了几个选项,包括 pandas dataframe,但是,我做不到,所以我请求帮助。
我将文件作为图片附加,因为我无法上传文件本身,代码:
with open('data.dat', 'r') as f:
output_data = f.readlines()
element = [(d+' ')[:d.find(':')].rstrip() for d in output_data] # trying to read only number after ":"
print(output_data[0])
# EXPECTED OUTPUT is:
0.162239678E+01
# CURRENT OUTPUT IS: [' data 1: 0.162239678E+01\n', ' data 2: 0.413951524E+01']
## data.dat is as the following:
data 1: 0.162239678E+01
data 2: 0.413951524E+01
您的方法似乎是正确的,但不知何故您针对的是每行的第一部分而不是实际数字。问题是这样的:[:d.find(':')]
,你想要字符串的另一边:[d.find(':'):]
。此外,您将捕获 ":"
字符,因此将 1 添加到该位置。然后,使用 str.strip
而不是 str.rstrip
在字符串的两边应用该函数。这是生成的代码(经过一些简化):
with open('data.dat', 'r') as f:
output_data = f.readlines()
elements = [d[d.find(':')+1:].strip() for d in output_data]
print(elements)
我想从文件中的矩阵读取数据,问题是数据是带有字符串的浮点数,但是,我只对读取浮点数元素感兴趣, 我尝试了几个选项,包括 pandas dataframe,但是,我做不到,所以我请求帮助。
我将文件作为图片附加,因为我无法上传文件本身,代码:
with open('data.dat', 'r') as f:
output_data = f.readlines()
element = [(d+' ')[:d.find(':')].rstrip() for d in output_data] # trying to read only number after ":"
print(output_data[0])
# EXPECTED OUTPUT is:
0.162239678E+01
# CURRENT OUTPUT IS: [' data 1: 0.162239678E+01\n', ' data 2: 0.413951524E+01']
## data.dat is as the following:
data 1: 0.162239678E+01
data 2: 0.413951524E+01
您的方法似乎是正确的,但不知何故您针对的是每行的第一部分而不是实际数字。问题是这样的:[:d.find(':')]
,你想要字符串的另一边:[d.find(':'):]
。此外,您将捕获 ":"
字符,因此将 1 添加到该位置。然后,使用 str.strip
而不是 str.rstrip
在字符串的两边应用该函数。这是生成的代码(经过一些简化):
with open('data.dat', 'r') as f:
output_data = f.readlines()
elements = [d[d.find(':')+1:].strip() for d in output_data]
print(elements)