我正在制作一个进行一些数据处理的webapp,所以我经常发现自己将字符串(从URL或文本文件)解析为Python值.
我使用的函数是"一种"更安全的eval版本(除非它无法读取字符串,否则它将保持字符串):
def str_to_value(string):
for atom in (True, False, None):
if str(atom) == string:
return atom
else:
try:
return int(string)
except ValueError:
try:
return float(string)
except ValueError:
return string
Run Code Online (Sandbox Code Playgroud)
......然而,这对我来说似乎非常难看.这样做有更干净的方法吗?我发现了一个类似这样的旧讨论,但我想知道是否有一种快速而简单的方法(比如我不知道的库函数,还是一个聪明的单行程?).
>>> float(str(0.65000000000000002))
0.65000000000000002
>>> float(str(0.47000000000000003))
0.46999999999999997 ???
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?如何转换0.47000000000000003为字符串并将结果值恢复为浮点数?
我在Windows上使用Python 2.5.4.
当我想要这个时,我找不到另一个答案,所以我想我会为其他人发布我自己的解决方案,如果我做错了也会得到更正.
我必须创建一个自动配置文件解析器,如果可能的话我更喜欢使用int,如果不是,我会浮动.通常的try/except转换本身不起作用,因为任何float都只会被强制转换为int.
为了澄清有人问,案例基本上是将数字转换为编写配置文件数据的人.所以带小数的任何东西都可能是浮点数.另外,由于浮点数的性质,我认为float对于某些运算符(例如==,<,>)可能是危险的,并且int将在必要时转换为float.因此,我希望数字尽可能保持在int中.这不是一件大事,只是对我自己的一种约定.
是否有一种"简单"的方法将包含数字的str转换为[x,y]整数列表?
# from: '5,4,2,4,1,0,3,0,5,1,3,3,14,32,3,5'
# to: [[5, 4], [2, 4], [1, 0], [3, 0], [5, 1], [3, 3], [14, 32], [3, 5]]
Run Code Online (Sandbox Code Playgroud)
顺便说一句,下面的工作,但不会直接称之为...此外,可以假设输入str已经过验证,以确保它只包含偶数个逗号交错的数字.
num_str = '5,4,2,4,1,0,3,0,5,1,3,3,14,32,3,5'
numpairs_lst = [] # ends up as [[5, 4], [2, 4], [1, 0], ...]
current_num_str = '' # the current num within the str; stop when a comma is found
xy_pair = [] # this is one of the [x,y] pairs -> [5, 4]
for ix,c in enumerate(num_str):
if c == ',':
xy_pair.append(int(current_num_str))
current_num_str …Run Code Online (Sandbox Code Playgroud) 我有一个清单:
Student_Grades = ['56', '49', '63']
Run Code Online (Sandbox Code Playgroud)
我想将每个条目转换为整数,以便我可以计算平均值.
这是我的转换代码:
for i in Student_Grades:
Student_Grades = [int(i)]
Run Code Online (Sandbox Code Playgroud)
我一直在收到错误
invalid literal for int() with base 10: '56,'
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么办
以下是关于我如何获得Student_Grades Choose_File = str的完整代码(输入("请输入要读入的文件的确切名称(包括文件扩展名):"))
with open(Choose_File, "r") as datafile:
counter = 1
x = 1
Student_Grades = []
Read = datafile.readlines()
info = Read[counter]
Split_info = info.split()
n = len(Split_info)
while x < n:
Student_Grades.append(Split_info[x])
x = x + 2
Run Code Online (Sandbox Code Playgroud)
文本文件的格式为'MECN1234 56,MECN1357 49,MATH1111 63'
如何在F#中将字符串转换为int?
作为一个例子,我想传递
let someString = "123给let someInt = 123
我,我真的找不到任何适合我的解析方法.这个问题不是关于从int解析到String,而是解析为int.不重复相关问题.有任何想法吗?
提前致谢
我是编码的新手,所以我决定使用unicode为测试目的制作某种密码,我已经通过在Unicode中添加数字来做到这一点,所以这有点秘密.我一直在收到这个错误,但我不知道如何解决它.有什么解决方案吗?这是代码:
while True:
try:
message = int(input("Enter a message you want to be decrypt: "))
break
except ValueError:
print("Error, it must be an integer")
secret_string = ""
for char in message:
secret_string += chr(ord(char - str(742146))
print("Decrypted", secret_string)
q = input("")
Run Code Online (Sandbox Code Playgroud) 所以我正在创建一个程序来显示数字系统,但是我在第一个障碍时遇到了问题.该程序将从用户那里获取一个数字,然后在整个程序中使用该数字,以便解释几个计算机科学概念.
在解释我的第一部分编号系统时,程序会说出它是什么类型的编号.我这样做是通过将字符串转换为浮点数来实现的.如果浮点数后面只有".0",那么它将它转换为整数.
目前我正在使用此代码
while CorrectNumber == False:
try:
Number = float(NumberString) - 0
print (Number)
except:
print ("Error! Not a number!")
Run Code Online (Sandbox Code Playgroud)
这很有用,因为它显示用户是否输入了数字.但是,我不确定如何检查小数位后的值,以检查是否应将其转换为整数.有小费吗?
如何将'1.03'(字符串)转换为Python中的数字,最好是小数?
如何将字典值转换为浮点数
dict1= {'CNN': '0.000002'}
s=dict1.values()
print (s)
print (type(s))
Run Code Online (Sandbox Code Playgroud)
我得到的是:
dict_values(['0.000002'])
<class 'dict_values'> # type, but need it to be float
Run Code Online (Sandbox Code Playgroud)
但是我想要的是float值,如下所示:
0.000002
<class 'float'> # needed type
Run Code Online (Sandbox Code Playgroud) python ×9
python-3.x ×3
string ×2
dictionary ×1
f# ×1
ieee-754 ×1
int ×1
integer ×1
list ×1
parsing ×1
python-2.7 ×1
unicode ×1