相关疑难解决方法(0)

在Python 3中将字符串转换为字节的最佳方法?

似乎有两种不同的方法将字符串转换为字节,如TypeError的答案所示:'str'不支持缓冲区接口

哪种方法更好或更好Pythonic?或者只是个人喜好?

b = bytes(mystring, 'utf-8')

b = mystring.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

python string character-encoding python-3.x

734
推荐指数
5
解决办法
110万
查看次数

'b'字符在字符串文字前面做了什么?

显然,以下是有效的语法

my_string = b'The string'
Run Code Online (Sandbox Code Playgroud)

我想知道:

  1. 这是什么b字在前面的字符串是什么意思?
  2. 使用它有什么影响?
  3. 使用它的适当情况是什么?

我在SO上找到了一个相关的问题,但是这个问题是关于PHP的,它表示b用于表示字符串是二进制的,而不是Unicode,这是代码与PHP版本兼容所需的代码<6 ,当迁移到PHP 6.我不认为这适用于Python.

我确实在Python网站上找到了关于使用相同语法的字符将字符串指定为Unicode的文档u.不幸的是,它没有提到该文档中任何地方的b字符.

而且,只是出于好奇,有没有比多符号bu是做其他事情?

python string unicode binary

724
推荐指数
10
解决办法
49万
查看次数

UTF-8"可变宽度编码"如何工作?

unicode标准中有足够的代码点,你需要4个字节来存储它们.这就是UTF-32编码所做的.然而,UTF-8编码通过使用称为"可变宽度编码"的东西以某种方式将这些压缩到更小的空间.

实际上,它设法在一个字节中代表US-ASCII的前127个字符,它看起来与真正的ASCII完全相同,因此您可以将许多ascii文本解释为UTF-8而不对其执行任何操作.干净的把戏.那么它是怎样工作的?

我将在这里提出并回答我自己的问题,因为我只是做了一些阅读以弄清楚它并且我认为它可能会节省其他人一些时间.如果我有一些错误,也许有人可以纠正我.

unicode utf-8 character-encoding multibyte

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

如何从HTML表单上传带有python-tornado的图像?

我看到使用pycurl的例子,但不能确定这是否可以使用?一些例子会有所帮助.谢谢.

python tornado image-upload

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

如何在使用read_sas后从pandas对象类型中的b'Text'获取Text?

我正在尝试使用pandas函数read_sas从SAS的.sas7bdat格式读取数据:

import pandas as pd
df = pd.read_sas('D:/input/houses.sas7bdat', format = 'sas7bdat')
df.head()
Run Code Online (Sandbox Code Playgroud)

我在df数据框中有两种数据类型 - float64和object.我对float64数据类型完全满意,所以我可以自由地将它转换为int,string等.问题是对象数据类型,我可以在df dataframe中看到这样包裹:

b'Text'
Run Code Online (Sandbox Code Playgroud)

或者像这样:

b'12345'
Run Code Online (Sandbox Code Playgroud)

代替

Text
Run Code Online (Sandbox Code Playgroud)

要么

12345
Run Code Online (Sandbox Code Playgroud)

我不能将它分别转换为字符串或int或"普通"对象数据类型.此外,我不能使用切片或替换技术来使用b''.所以我无法使用具有对象数据类型的列.请告诉我如何摆脱b''.

python object dataframe pandas

8
推荐指数
2
解决办法
6058
查看次数

python 字节(some_string, 'UTF-8') 和 str(some_string, 'UTF-8')

我想将为 python3 编写的代码改编为 python2.7,同时这样做我因为这两个而出错

bytes(some_string, 'UTF-8') 和 str(some_string, 'UTF-8')

我的问题:

遵循正确的方法来适应 str(some_string, 'UTF-8')

a = str(some_string)

a = a.encode('UTF-8')

以及如何将 bytes(some_string, 'UTF-8') 适配到 python2.7,因为 python3 中引入了字节。

python string encoding utf-8 character-encoding

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

Python 的字节类型用于什么?

有人可以解释 Python 3 中字节类型的一般用途,或者举一些例子说明它比其他数据类型更受欢迎吗?我看到字节数组相对于字符串的优势在于它们的可变性,但是字节呢?到目前为止,我真正需要它的唯一情况是通过套接字发送和接收数据;还有别的吗?

byte types python-3.x

6
推荐指数
1
解决办法
3434
查看次数

为什么结果打印 b'hello,Python!' ,当我使用张量流时?

代码固定在下面:

import tensorflow as tf

hello=tf.constant("hello,Python!")

sess=tf.Session()

print(sess.run(hello))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

当前结果固定在下面:

“你好,Python!”

然后是截图

那么,我该怎么做才能去掉当前结果之前奇怪的“b”呢?

python tensorflow

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

如何解码包含无效字节的字节对象,Python3

在python2中,我可以整天生成以字符串格式表示的这些十六进制字节 '\x00\xaa\xff'

>>>’00'.decode('hex') + 'aa'.decode('hex') + 'ff'.decode('hex')
>>>'\x00\xaa\xff'
Run Code Online (Sandbox Code Playgroud)

同样,我可以在 python3 中做到这一点

>>> bytes.fromhex(’00’) + bytes.fromhex(‘aa’) + bytes.fromhex(‘ff’)
>>>b'\x00\xaa\xff'
Run Code Online (Sandbox Code Playgroud)

根据py2->py3这里的变化

Python 3.0 使用文本和(二进制)数据的概念,而不是 Unicode 字符串和 8 位字符串。所有文本都是Unicode;但是编码后的 Unicode 表示为二进制数据。

所以 Py2 版本的输出是一个字符串,而 Py3 版本的输出是字节类型的二进制数据

但我真的需要一个字符串版本!

根据上述文档:

由于 str 和 bytes 类型不能混合使用,您必须始终在它们之间进行显式转换。使用 str.encode() 从 str 转到 bytes,使用 bytes.decode() 从 bytes 转到 str。您还可以分别使用 bytes(s, encoding=...) 和 str(b, encoding=...) 。

好的,现在我必须解码这个字节类型的二进制数据......

>>> b'\x00\xaa\xff'.decode()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xaa in …
Run Code Online (Sandbox Code Playgroud)

string encode decode python-3.x

2
推荐指数
1
解决办法
2785
查看次数

ValueError:AES密钥必须为16、24或32个字节长PyCrypto 2.7a1

我正在为我的学校项目编程,上面有一个问题。这是我的代码:

def aes():
    #aes
    os.system('cls')
    print('1. Encrypt')
    print('2. Decrypt')

    c = input('Your choice:')

    if int(c) == 1:
        #cipher
        os.system('cls')
        print("Let's encrypt, alright")
        print('Input a text to be encrypted')
        text = input()

        f = open('plaintext.txt', 'w')
        f.write(text)
        f.close()

        BLOCK_SIZE = 32
        PADDING = '{'
        pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
        EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
        secret = os.urandom(BLOCK_SIZE)

        f = open('aeskey.txt', 'w')
        f.write(str(secret))
        f.close()

        f = open('plaintext.txt', 'r')
        privateInfo = f.read()
        f.close()

        cipher …
Run Code Online (Sandbox Code Playgroud)

python cryptography pycrypto python-3.x

-1
推荐指数
1
解决办法
6813
查看次数