繁体   English   中英

Python 3中for循环的数据类型和文档

[英]Data types and documentation for for-loop in Python 3

我对数据类型和UTF-8编码感到困惑。 实际情况是什么? 我正在Python 3中读取不带分隔符的凌乱JSON数据(数据有时会包含日语/中文字符)。

我正在读取数据:

url = "http://localhost:8001"
data = urllib.request.urlopen(url).read()
type(data)

它现在返回字节

然后我想逐字阅读

for letter in data:
    type(letter)

它返回我字母现在是整数 为什么是一个字节,现在是整数? PS我知道我得到的整数表示字符的十进制表示形式。 但是这种来回跳跃让我感到困惑。

PS我也找不到for循环的官方文档。 有一个吗?

谢谢。

按照Padraic Cunningham的建议解码数据应该可以:

data = urllib.request.urlopen(url).read().decode("utf-8")

您还要求for循环的正式文档。 我不确定您是否提及此信息,还是在谈论data的迭代行为。

一个的迭代行为bytes作为说明在这里

由于字节对象是整数序列(类似于元组),因此对于字节对象b,b [0]将是整数,而b [0:1]将是长度为1的字节对象。(这与文本相反字符串,其中索引和切片都会产生长度为1的字符串)

很抱歉,没有足够的代表将其发布为对先前答案的评论。

您需要将字节解码为str

In [12]: data = urllib.request.urlopen("http://stackoverflow.com/questions/38014233/data-types-and-documentation-for-for-loop-in-python-3/38014292#38014292").read()

In [13]: type(data)
Out[13]: bytes

In [14]: type(data.decode("utf-8"))
Out[14]: str

In [15]: data[0]
Out[15]: 60

In [16]: data.decode("utf-8")[0]
Out[16]: '<'

解码后,您在循环打印时会看到字符。 urllib.request.urlopen(url).read()返回bytes ,这取决于您将这些字节解码为str。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM