Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将python QRCode模块转换为python 3时出错_Python_Regex_Python 3.x_Typeerror - Fatal编程技术网

将python QRCode模块转换为python 3时出错

将python QRCode模块转换为python 3时出错,python,regex,python-3.x,typeerror,Python,Regex,Python 3.x,Typeerror,下午好,我尝试了几天,让lincolnloop的Python二维码模块在Python3下运行。它在Python2.x上运行得非常完美 总的来说,我对Python编程非常陌生,但我认为到目前为止我已经完成了我的家庭作业 第一个错误: File "/usr/lib/python3.2/qrcode/util.py", line 274, in __init__ if not isinstance(data, basestring): NameError: global name 'bas

下午好,我尝试了几天,让lincolnloop的Python二维码模块在Python3下运行。它在Python2.x上运行得非常完美

总的来说,我对Python编程非常陌生,但我认为到目前为止我已经完成了我的家庭作业

第一个错误:

 File "/usr/lib/python3.2/qrcode/util.py", line 274, in __init__

    if not isinstance(data, basestring):
NameError: global name 'basestring' is not defined
所以在Python3中不再存在basestring,我用这里找到的这个代码语句修复了这个问题。-

所以下一个错误出现了

  File "/usr/lib/python3.2/qrcode/util.py", line 285, in __init__
    elif re.match('^[%s]*$' % re.escape(ALPHA_NUM), data):
  File "/usr/lib/python3.2/re.py", line 153, in match
    return _compile(pattern, flags).match(string)
TypeError: can't use a string pattern on a bytes-like object
因此,我尝试了这里找到的解决方案,并将以下代码更改为:

elif re.match('^[%s]*$' % re.escape(ALPHA_NUM), data):
致:

以二进制模式处理正则表达式。但这会在同一行代码中抛出下一个执行选项

    elif re.match(b'^[%s]*$' % re.escape(ALPHA_NUM), data):
TypeError: unsupported operand type(s) for %: 'bytes' and 'str'
我也尝试改变

ALPHA_NUM = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'

但这不会对Execption进行任何更改

因此,对于我来说,这表明了与之前相同的错误,代码中的任何地方都必须是这种类型的错误,无论是字节类型还是字符串类型。但是我找不到它

我知道整个脚本对于深入python非常复杂,但是对于我的项目,我需要一个工作的QR码生成器


谁能给我一个线索吗?提前谢谢

不能将%运算符用于
字节
对象。您现在处理的数据是真正的二进制数据,还是文本?如果它是文本,您应该真正地将其作为字符串处理,而不是作为字节处理

此外,请与本模块的作者交谈。他们可能已经完成了大部分移植,或者他们可能愿意提供帮助。第三,阅读,一本关于这个话题的免费书


处理Unicode和字节数据是移植的困难部分。您必须确保始终使用其中一种,而正确使用通常是一件非常痛苦的事情。

最好的办法可能是从开始,并修复无法自动翻译的错误。我研究了您今天早些时候提供的链接,但是自动2to3工具只修复了“string,basestring”问题,这是我以前手动修复的。“TypeError:不支持%:bytes和str的操作数类型”甚至没有显示。这就是我决定向stackoverflow寻求帮助的原因。你能换一种方式将
数据
转换成字符串吗?您需要执行
数据。解码(编码)
其中
编码
是合适的编码(如
'ascii'
)。很抱歉,我没有浏览所有链接,因此可能这不是一个真正的解决方案。Python 3没有官方的
PIL
版本(处理图像所依赖的
qrcode
)。这里没有测试(如果你不想让它对其他人有用,请不要在没有测试的情况下移植)。谢谢大家帮助我。我想不出如何修复这些错误。我真的很想知道这个错误信息,因为我找不到关于这意味着什么的更多信息
elif re.match(b'^[%s]*$'%re.escape(ALPHA_NUM),data):TypeError:不支持%的操作数类型:“bytes”和“bytes”
我找到了另一个版本的QR生成器。它似乎是原始版本,哪一个Python QR代码是基于。但是目前还没有实现有效的图像处理。这些代码看起来非常相似,但有一些不同。这一个不使用正则表达式。为了完整起见,这里是另一个的链接:MichaelThank you!经过几个小时的代码学习,我终于得到了一个运行Python3的pythonqr工作端口。我从d-project.com获得了一个原始端口,并用PIL实现了一个工作图像处理功能。目前我需要稍微清理一下代码,但之后我会发布它,这样每个人都可以在Python3中使用它。迈克尔
    elif re.match(b'^[%s]*$' % re.escape(ALPHA_NUM), data):
TypeError: unsupported operand type(s) for %: 'bytes' and 'str'
ALPHA_NUM = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'
ALPHA_NUM = b'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'