我通过Ubuntu机器上的VLC播放器下载塞尔维亚语/波斯尼亚语/克罗地亚语字幕,并不断手动将æ、è和ð等字符更改为ć、č和đ,以便播放器能够正确渲染它们。我想做一个python3函数,可以为我做到这一点,但我迷失了理解字符串编码和解码
通过chardata.detect
我发现VLC播放器下载的.srt
文件的编码是Windows-1252。所以现在,我做了这样的事情:
import codecs
f = codecs.open('my_file.srt', 'r', encoding='Windows-1252')
data = f.read()
data_utf8 = data.encode('utf-8')
f.close()
问题是,当我将data
变量的内容打印到终端时,可能会得到如下片段:
obožavam vaše
。
但是,当我将data-utf8
变量的内容打印到终端时,相同的片段现在看起来如下所示:
obo\xc5\xbeavam va\xc5\xa1e
。
这不是我所期望的
此外,当我现在想要将此数据保存到文件中时
with open('my_utf8_file.srt', 'w') as f:
f.write(data_utf8)
我得到TypeError: write() argument must be str, not bytes
谁能告诉我我做错了什么
尝试使用chardet确定正确的文件编码。
打开命令行并键入:
安装:
我用这个{a2}来测试
您必须使用:
注意“b”,这将文件标记为二进制文件,以便您可以写入字节(如由
.encode()
打印),这也是它打印方式不同的原因或者,您可以执行以下操作:
相关问题 更多 >
编程相关推荐