【发布时间】:2014-08-24 14:24:31
【问题描述】:
我正在尝试编写一个应用程序,用于打开选定(子)文件夹中的 txt 文件,并将所有字母“ž”替换为字母“š”,并将其保存为 UTF-8 格式。
这是我到目前为止所做的(版本 2 - 见编辑):
import os
import codecs
startIn = os.getcwd()
print()
print("Pregledujem: " + startIn + "\\")
print("-------------------------")
for dirName, subdirList, fileList in os.walk(startIn):
print()
print("Trenutna mapa: " + dirName + "\\")
for fname in fileList:
if fname.endswith(".srt"):
fullpath = dirName + "\\" + fname
print(" Podnapis: " + fname )
with codecs.open(fullpath, 'r+', "UTF-8-sig") as cursub:
lines = cursub.read().replace("ž","š")
cursub.seek(0)
cursub.write(lines)
编辑
现在替换字母可以正常工作,但我仍然无法弄清楚如何正确编码文件 TO utf-8。
当前版本输出如下错误:
UnicodeDecodeError: 'utf-8' 编解码器无法在位置解码字节 0x9a 220: 无效的起始字节
【问题讨论】:
-
什么不起作用?
-
哪个版本的 Python?
-
你正在替换,但你没有写回;当您执行
line.replace时,它不会写回该行,它只是修改它。您遇到的另一个问题是您打开文件进行写入,这将删除其内容;这意味着line不会包含您要替换的字母。