您好,我有以下代码:
path =硬盘上的某个目的地
def K(path):
try:
getfile = open(path + '/test.txt')
line = getfile.readlines()
print line
getfile.close()
except:
line = getfile.readlines()
eval(line)
d = dict()
val= d[k]
导入文本文件,现在我的问题是避免\n
,我假设可以使用eval()
函数完成。我想将我得到的字符串作为输入转换为我可以使用的浮点数..
提前任意提示
答案 0 :(得分:2)
提示:
>>> float("\n1234\n")
1234.0
答案 1 :(得分:1)
您的代码非常混乱...要读取每行包含一个浮点数的文件,您可以这样做:
val = map(float, open("test.txt"))
val
将是一个包含您的数据的列表,每个元素都是一个浮点数
答案 2 :(得分:1)
我不会评论您的代码,只是发布一个示例,您可以检查和修改它以使其正常工作。此函数读取文本文件的内容,并尽可能将由空格分隔的标记转换为浮点数:
def getFloats(filepath):
fd = open(filepath) # open the file
try:
content = fd.read().split() # read fully
def flo(value): # a function that returns a float for the given str or None
try: return float(value)
except ValueError: return None # skip invalid values
# iterate through content and make items float or None,
# iterate over the result to choose floats only
return [x for x in [flo(y) for y in content] if x]
finally:
fd.close()
答案 3 :(得分:0)
ast.literal_eval()
会将每一行转换为元组,然后您可以迭代或索引值。
答案 4 :(得分:0)
这是一个函数read_numbers()
,它返回一个浮动列表列表。
def read_numbers(filename):
numbers = []
with open(filename) as f:
for line in f:
lst = [float(word) for word in line.split(',')]
numbers.append(lst)
return numbers
如果您的文件包含:
1, 2
2, 3
7, 5
然后read_numbers('filename')
会返回:
[[1.0, 2.0], [2.0, 3.0], [7.0, 5.0]]
您可能希望通过扩展内部列表理解并将调用包裹在float()
中的try ... except ValueError
来进行错误处理(或者只是忽略错误)。