python - len() 为字符串返回错误的数字
问题描述
我在命令行上运行一个简单的脚本: echo "Alex " > alex.txt
len(open("alex.txt").read()) returns 16 instead of 5
当我跑步时,open("alex.txt").read()
我得到:
ÿþA\x00l\x00e\x00x\x00 \x00\n\x00\n\x00
问题是什么?
解决方案
文件中的字节数和字符串中的字符数通常是不同的东西。
坚持使用有限的字符集,例如 ASCII,您可以得到一对一,但现代编程语言比这更复杂,并且至少尝试为更广泛的书面语言提供服务。
您通常需要知道编码是什么。您可能不会在文件本身中得到任何指示。
读取字节后,您需要将这些字节编码为字符串:
open("alex.txt","rb").read().decode('utf-16')
您可以open
为您执行此操作,这可能更可靠:
open("file.txt",encoding='utf-16').read()
现在,如果您想花哨并从 BOM 中获取编码,您可以在此处查看答案:
推荐阅读
- aws-lambda - 在 Lambda 代理集成中通过 API Gateway 传递 multipart/form-data
- javascript - 从对象数组 JavaScript 中提取所有数组?
- sql - 如何获取特定交易的起始值和结束值
- php - Laravel Auth 登录页面刚刚刷新
- python - 如何获得 SGDClassifier (LinearSVM) 的概率
- php - 使用 Laravel 和 Dropzone 图片上传数据中插入的 id
- c# - 使用字符串 C# 引用 XAML
- java - XMLDecoder >> java.lang.IllegalArgumentException:不支持的元素
- java - 如何使用 Jackson 序列化为 java.util.List 和 java.util.Map
- node.js - 无法使用 AWS SES 发送电子邮件:我没有正确配置它吗?