Python中的Eval函数
您好,我有以下代码: 路径=硬盘上的某个目标Python中的Eval函数,python,eval,Python,Eval,您好,我有以下代码: 路径=硬盘上的某个目标 def K(path): try: getfile = open(path + '/test.txt') line = getfile.readlines() print line getfile.close() except: line = getfile.readlines() eval(line) d = dict
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()
函数来完成。我想将作为输入的字符串转换为可以使用的浮点
提前获取任何提示的Thanx提示:
>>> float("\n1234\n")
1234.0
提示:
你的代码很混乱。。。要读取每行包含一个浮点数的文件,只需执行以下操作:
val = map(float, open("test.txt"))
val
将是一个包含您的数据的列表,每个元素都是一个浮点数您的代码非常混乱。。。要读取每行包含一个浮点数的文件,只需执行以下操作:
val = map(float, open("test.txt"))
val
将是一个包含您的数据的列表,每个元素都是一个浮点数我不会评论您的代码,只会发布一个示例,您可以检查并修改它以使其正常工作。此函数读取文本文件的内容,并在可能的情况下将由空格分隔的标记转换为浮点数:
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()
我不会评论你的代码,只会发布一个例子,你可以检查和修改,使其工作。此函数读取文本文件的内容,并在可能的情况下将由空格分隔的标记转换为浮点数:
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()
ast.literal\u eval()
将每一行转换为元组,然后您可以对值进行迭代或索引。ast.literal\u eval()
将每一行转换为元组,然后您可以对值进行迭代或索引。下面是一个函数read\u 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
然后,读取编号('filename')
将返回:
[[1.0, 2.0], [2.0, 3.0], [7.0, 5.0]]
您可能希望通过扩展内部列表理解并将对
float()
的调用包装在try中来执行错误处理(或简单地忽略错误)。。。除了ValueError
之外,这里有一个函数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
然后,读取编号('filename')
将返回:
[[1.0, 2.0], [2.0, 3.0], [7.0, 5.0]]
您可能希望通过扩展内部列表理解并将对
float()
的调用包装在try中来执行错误处理(或简单地忽略错误)。。。除了ValueError
之外,如果您描述文本文件的格式,则会有所帮助。使用eval
来避免\n
是一件无法描述的事情。这段代码应该做什么?它在我的硬盘上获取一些file.txt文件,并将文本作为字符串导入python shell,因此如果即时文件有1,2(换行符)2,3(换行符)7,5,我在shell中得到的输入是['1,2\n','2,3\n','7,5']我希望它是我可以使用的数字:)希望这能帮助。。。让我们明确一点:文件中的每一行都有一个逗号分隔的整数列表,作为文本,您想将该文本转换为Python中的int
对象列表吗?如果您描述文本文件的格式,这会有所帮助。使用eval
来避免\n
是一件无法描述的事情。这段代码应该做什么?它在我的硬盘上获取一些file.txt文件,并将文本作为字符串导入python shell,因此如果即时文件有1,2(换行符)2,3(换行符)7,5,我在shell中得到的输入是['1,2\n','2,3\n','7,5']我希望它是我可以使用的数字:)希望这能帮助。。。因此,让我们明确一点:文件中的每一行都有一个逗号分隔的整数列表,作为文本,您想将此文本转换为Python中的int
对象列表吗?val=[float(line)for line in open('test.txt')]
将更清晰、更节省内存(因为迭代文件中的行不会一次读取所有行,不像readlines()
)。@benhoyt:你说得对……当我需要同时播放多行时,我经常使用L=open(xxx)。readlines()
,而现在这很危险。val=[float(line)对于打开中的行('test.txt')]将更清晰、更高效(因为迭代文件中的行不会一次读取所有行,不像readlines()
)。@benhoyt:你说得对……我经常使用L=open(xxx).readlines()
当我需要同时演奏多个台词时,它现在危险地达到了手指的高度。