相关疑难解决方法(0)

Python"安全"eval(字符串到bool/int/float/None/string)

我正在制作一个进行一些数据处理的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)

......然而,这对我来说似乎非常难看.这样做有更干净的方法吗?我发现了一个类似这样的旧讨论,但我想知道是否有一种快速而简单的方法(比如我不知道的库函数,还是一个聪明的单行程?).

python parsing type-conversion

12
推荐指数
1
解决办法
7940
查看次数

Python float - str - float怪异

>>> 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.

python string floating-point floating-accuracy ieee-754

10
推荐指数
1
解决办法
6068
查看次数

如何将字符串转换为int或float优先级为int?

当我想要这个时,我找不到另一个答案,所以我想我会为其他人发布我自己的解决方案,如果我做错了也会得到更正.

我必须创建一个自动配置文件解析器,如果可能的话我更喜欢使用int,如果不是,我会浮动.通常的try/except转换本身不起作用,因为任何float都只会被强制转换为int.

为了澄清有人问,案例基本上是将数字转换为编写配置文件数据的人.所以带小数的任何东西都可能是浮点数.另外,由于浮点数的性质,我认为float对于某些运算符(例如==,<,>)可能是危险的,并且int将在必要时转换为float.因此,我希望数字尽可能保持在int中.这不是一件大事,只是对我自己的一种约定.

python

10
推荐指数
1
解决办法
3万
查看次数

python:将"5,4,2,4,1,0"转换为[[5,4],[2,4],[1,0]]

是否有一种"简单"的方法将包含数字的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)

python

9
推荐指数
3
解决办法
2756
查看次数

将列表项从字符串转换为int(Python)

我有一个清单:

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'

python int list python-3.x

8
推荐指数
3
解决办法
7万
查看次数

F#String转换为int

如何在F#中将字符串转换为int?

作为一个例子,我想传递 let someString = "123let someInt = 123 我,我真的找不到任何适合我的解析方法.这个问题不是关于从int解析到String,而是解析为int.不重复相关问题.有任何想法吗?

提前致谢

string f# integer

8
推荐指数
1
解决办法
1万
查看次数

编码新手 - Python Error = TypeError:只能将str(不是"int")连接到str

我是编码的新手,所以我决定使用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)

python unicode

8
推荐指数
4
解决办法
7万
查看次数

检查字符串是整数还是浮点数

所以我正在创建一个程序来显示数字系统,但是我在第一个障碍时遇到了问题.该程序将从用户那里获取一个数字,然后在整个程序中使用该数字,以便解释几个计算机科学概念.

在解释我的第一部分编号系统时,程序会说出它是什么类型的编号.我这样做是通过将字符串转换为浮点数来实现的.如果浮点数后面只有".0",那么它将它转换为整数.

目前我正在使用此代码

while CorrectNumber == False:
try:
    Number = float(NumberString) - 0
    print (Number)
except:
    print ("Error! Not a number!")
Run Code Online (Sandbox Code Playgroud)

这很有用,因为它显示用户是否输入了数字.但是,我不确定如何检查小数位后的值,以检查是否应将其转换为整数.有小费吗?

python number-systems python-3.x

7
推荐指数
4
解决办法
1万
查看次数

如何将python中的十进制字符串转换为数字?

可能重复:
Python - 将字符串解析为Float或Int

如何将'1.03'(字符串)转换为Python中的数字,最好是小数?

python

6
推荐指数
2
解决办法
5万
查看次数

如何将字典值转换为浮点数

如何将字典值转换为浮点数

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 dictionary python-2.7 python-3.x

6
推荐指数
2
解决办法
8490
查看次数