Python ValueError:无法将字符串转换为浮点:';1';

Python ValueError:无法将字符串转换为浮点:';1';,python,python-2.7,floating-point,Python,Python 2.7,Floating Point,当我确认我试图转换为浮点的变量确实是一个字符串(我将在这里显示我的日志)时,我感到非常困惑: 当我尝试将字符串转换为整数时,会出现以下错误: ValueError: invalid literal for int() with base 10: "'1'" 看来这应该是直截了当的。但我不明白为什么我会犯这个错误。有人能发现问题吗 谢谢 您有一个嵌套字符串,即ratingX=“'1'” 对于values=[“('1','1')”,“('1','1')”]的起点, 我建议首先将其转换为您想要的格式

当我确认我试图转换为浮点的变量确实是一个字符串(我将在这里显示我的日志)时,我感到非常困惑:

当我尝试将字符串转换为整数时,会出现以下错误:

ValueError: invalid literal for int() with base 10: "'1'"
看来这应该是直截了当的。但我不明白为什么我会犯这个错误。有人能发现问题吗


谢谢

您有一个嵌套字符串,即
ratingX=“'1'”

对于
values=[“('1','1')”,“('1','1')”]的起点,

我建议首先将其转换为您想要的格式:

clean\u cell=lambda x:map(float,re.findall(r'\'([0-9]+)\'',x))
values\u cleaned=map(clean\u单元格,值)
#然后迭代
对于值中的额定值:
如果(长度(额定值)=2):
评级X,评级Y=评级[0],评级[1]#此步骤可能不是必需的:P
处理评级(评级X、评级Y)

您有一个嵌套字符串,即
ratingX=“'1'”

对于
values=[“('1','1')”,“('1','1')”]的起点,

我建议首先将其转换为您想要的格式:

clean\u cell=lambda x:map(float,re.findall(r'\'([0-9]+)\'',x))
values\u cleaned=map(clean\u单元格,值)
#然后迭代
对于值中的额定值:
如果(长度(额定值)=2):
评级X,评级Y=评级[0],评级[1]#此步骤可能不是必需的:P
处理评级(评级X、评级Y)

Try
print repr(ratingXf)
v是('1','1'),但我使用v.split(','),它给出[“('1'”,'1')”]v是元组?或者是v=“'1”,“1'”?元组没有拆分方法…不,v不是元组。它是一个嵌套字符串,这会带来问题。我不得不删除空格,并做了一些黑客让它工作。只是想知道有没有更简单的方法?!请参阅我的最新答案。您可以使用lambda将每个评级字符串转换为浮点数列表,使其更易于访问。请尝试
print repr(ratingXf)
v is('1','1'),但我使用v.split(','),它给出[“('1'”,'1')”]v是元组?或者是v=“'1”,“1'”?元组没有拆分方法…不,v不是元组。它是一个嵌套字符串,这会带来问题。我不得不删除空格,并做了一些黑客让它工作。只是想知道有没有更简单的方法?!请参阅我的最新答案。您可以使用lambda将每个评级字符串转换为浮点数列表,使它们更易于访问。
int('1')
float('1')
产生与OP相同的错误,所以看起来确实如此,是的,我认为是这样。我一直在试图去掉多余的引号。这是正确的方法还是有更优雅的方法?我正在使用MapReduce在Google应用程序引擎中完成所有这些。它是通过BlobKeys传递的。我有一个如下的值字符串:value=[“('1','1')”,“('1','1'),“('5','5')”,“('1','1')”,“('5','5')”,“('5','5')”)”]我循环遍历值:对于值中的v:当我检查时,第一个v是:('1','1'),它是一个字符串(不是元组)。因此,当我执行以下操作时:(rateX,rateY)=v.split(',')ratingXf=(rateX[1:])ratingYf=(rateY[:-1]),我得到的字符串是:ratingX='1'ratingYf='1',但是,repr(ratingXf)=“1',表示rateXf是一个嵌套字符串。我尝试了regex、strip()和其他一些方法来尝试提取值,以便将其转换为浮点(每次尝试float(),我都会收到一个错误),但没有成功。好吧,这一切都是有意义的:)更新了答案。
int('1')
float('1')
产生与OP相同的错误,所以看起来确实如此,是的,我想是这样的。我一直在试图去掉多余的引号。这是正确的方法还是有更优雅的方法?我正在使用MapReduce在Google应用程序引擎中完成所有这些。它是通过BlobKeys传递的。我有一个如下的值字符串:value=[“('1','1')”,“('1','1'),“('5','5')”,“('1','1')”,“('5','5')”,“('5','5')”)”]我循环遍历值:对于值中的v:当我检查时,第一个v是:('1','1'),它是一个字符串(不是元组)。因此,当我执行以下操作时:(rateX,rateY)=v.split(',')ratingXf=(rateX[1:])ratingYf=(rateY[:-1]),我得到的字符串是:ratingX='1'ratingYf='1',但是,repr(ratingXf)=“1',表示rateXf是一个嵌套字符串。我尝试了regex、strip()和其他一些方法来尝试提取值,以便将其转换为浮点(每次尝试float(),我都会收到一个错误),但没有成功。好的,这一切都有意义:)更新了答案。
rateX, rateY= v.split(',')
ratingXf = (rateX[1:])
ratingX = float(ratingXf)
ValueError: invalid literal for int() with base 10: "'1'"