|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 RIXO 于 2018-9-30 09:32 编辑
python3 中 str 类型 默认是 unicode bytes类型存储bytes数据 实际上就是如果你使用encode('utf-8')之类的命令实际上得到的是一个字节类型的数据,编码格式为utf-8
不过,我要说得不是这个
由于python3 中这样的特性,当你遇到一个
str1 = \u4e8c\u6b21\u611f\u5192\u771f\u7684\u592a\u53ef\u6015
这样的数据就很头痛
因为字符串默认是unicode编码 所以他没有解码,所有的解码实际上都是解成unicode 码
那么能编成其他的编码,然后显示吗?事实上编是能编的,但并没有卵用,反正编出来都不是中文
这样的解决方法,要么就在一开始,爬取的时候就指定好解码 r.encoding = 'unicode-escape'
要么就只能保存文件之后用
str1 = str1.encode('utf-8').decode('unicode-escape')
这样才能显示成中文
另外 在使用 requests 库时
response.text 是直接全部写到内存中的 所以会造成卡顿,但我们又不能像对待文件那样用for循环直接循环,因为response.text 是一个字符串
一个解决办法是这样的
自己写一个函数 ,当遇到 \n 的时候我们输出前面的语句,好像就和文件的for循环差不多了
start = 0
while True:
a = r.text.find('\n',start)
if a != -1:
start += a
print(r.text[:start])
else:
print(r.text[start:])
break
不过我一开始没想到
所以我把r.text保存到了文件中然后在把它读取出来,这个要比上面的效率高,可能别人写的代码厉害吧
或许这就是我和大佬之间的差距
round(3.1234123,3)
-->3.12
函数可以按照精度输出,但不是四舍五入
|
|