数字上的Unicode前缀-Python

数字上的Unicode前缀-Python,python,unicode,Python,Unicode,我正在尝试创建一个列表,其中我需要在一个列表中以字符串的形式输入数字,并且我正在尝试使用while循环来完成 while input_list[-1] != "": input_list.append(raw_input()) 但是,当输入数字时,它们返回为u'X',X是输入的数字。我无法对这些数字进行数学计算 我通常会使用str()或int(),但在这种情况下我无法概括 有没有比使用if语句简单地删除u“”前缀更干净的方法?u“”前缀试图指示值的类型。这里有字符串,不是数字。如果你想

我正在尝试创建一个列表,其中我需要在一个列表中以字符串的形式输入数字,并且我正在尝试使用while循环来完成

while input_list[-1] != "":
    input_list.append(raw_input())
但是,当输入数字时,它们返回为u'X',X是输入的数字。我无法对这些数字进行数学计算

我通常会使用str()或int(),但在这种情况下我无法概括

有没有比使用if语句简单地删除u“”前缀更干净的方法?

u“”前缀试图指示值的类型。这里有字符串,不是数字。如果你想做数学,你需要把字符串转换成数字。如果他们碰巧输入了无法转换为数字的字符串,您应该告诉用户发生了什么

user_typed = raw_input()
try:
    user_number = float(user_typed)
except ValueError:
    print "Couldn't convert this to a number, please try again: %r" % user_typed

另请参见:and

raw\u input()
返回字符串,而不是unicode值。然而
u'123'
是一个unicode值,您是否用自己的函数替换了
raw_input()
?这看起来很有用,为什么不能使用
int
int(u'123')
返回
123
。也就是说,
int()
在unicode字符串上同样有效
int(u'123')
仍然返回整数值
123
。列表中还有我要输入的字符串。如果user_typed.isdigit==True,则使用int()会导致错误:int(user_typed)#会更快,我正指望一个快速的解决方案,但它看起来并不存在。@deadfire19:在用户键入数字的常见情况下,它不会更快,因为我只扫描了一次,而您已经扫描了两次字符串。我更新了我的答案。我很好奇,所以我对这个话题做了一些分析。我发现,只有当98%的输入是数字时,try/except模式才会更快。我们讨论的是一个用户正在输入数字的情况。分析两者之间的差异是不相关的。@RemcoGerlich:OP中的“列表中还有我要输入的字符串。”请减少troll。