【问题标题】:How solve conversion thing in python that int() can't convert '\x002\x002\x001\x000\x00' into integer?如何解决python中int()无法将'\x002\x002\x001\x000\x00'转换为整数的转换问题?
【发布时间】:2017-01-19 13:15:10
【问题描述】:

我对 python int 函数有一些奇怪的问题。 我读取了一些带有数值的文件并将它们转换为整数。 当我在本地执行此操作时,一切正常,但是当我将其上传到 Google App Engine 时,转换失败并出现错误: invalid literal for int() with base 10: ''

我尝试打印它尝试转换的值,它是 2210。

然后我尝试从文件中输出整个分割线并得到以下结果: ['\x00B\x00a\x00u\x00w\x00e\x00n\x00s\x00', '\x002\x002\x001\x000\x00', '\x005\x004\x003\x001\x00', '\x005\x003\x007\x002\x00', '\x005\x002\x006\x005\x00', '\x005\x006\x001\x008\x00', '\x005\x003\x002\x008\x00\r\x00']

我使用该代码进行转换:int(splitted_line[j])

而且我对 python 很陌生。有人可以说我需要做什么吗?

【问题讨论】:

  • 看起来像是某种形式的 unicode,所以不妨试试int(splitted_line[j].decode("utf-8"))int(splitted_line[j].decode("utf-16"))
  • @KeefBaker - 我都试过了,但没有任何改变。

标签: python google-app-engine int type-conversion


【解决方案1】:

这似乎是一个编码问题,但一个快速的解决方法是在转换之前从每个字符串中删除 '\x00'。所以试试int(splitted_line[j].replace('\x00',''))

【讨论】:

  • 这绕过了异常,但导致了另一个我目前无法调试的问题。我希望有其他解决方案。
  • 我建议您退后一步检查文件的编码。您目前如何阅读它?如果with open() 不起作用,那么您可以尝试import codecs 并打开指定编码的文件。
  • 这是用户上传到网页的文件。然后我这样做:file_data = uploaded_file.file.read() 它不需要打开。现在我认为我得到的是文件字节内容而不是字符串。
猜你喜欢
  • 2018-07-27
  • 2020-06-26
  • 2022-12-08
  • 1970-01-01
  • 2016-03-10
  • 2020-04-10
  • 2012-06-14
  • 1970-01-01
  • 2022-08-04
相关资源
最近更新 更多