Python脚本没有';t将汉字写入XML文件
我正在为一个游戏制作一个mod,其中大部分文件是XMLs,文本是简体中文。我的目标是用繁体中文替换文件中的所有简体中文,然后是英文翻译。我正在使用谷歌的云翻译API来完成这一部分,一切都很好。起初,我只是对中文文本进行查找和替换,然后在字符串末尾添加英文,但问题是,每当中文文本出现不止一次时,我就会得到额外的英文翻译 为了解决这个问题,我阅读了更多关于Python的XML文档,并开始尝试使用tree.write,但这正是我陷入困境的地方。当我使用它时,XML文件中包含了汉字的UTF代码,而不是实际字符。如果我在web浏览器中打开该文件,角色将正确呈现,但此时我不确定如果他们没有正常写入XML,他们是否仍能在游戏中工作 下面是我正在使用的一个XML示例:Python脚本没有';t将汉字写入XML文件,python,xml,Python,Xml,我正在为一个游戏制作一个mod,其中大部分文件是XMLs,文本是简体中文。我的目标是用繁体中文替换文件中的所有简体中文,然后是英文翻译。我正在使用谷歌的云翻译API来完成这一部分,一切都很好。起初,我只是对中文文本进行查找和替换,然后在字符串末尾添加英文,但问题是,每当中文文本出现不止一次时,我就会得到额外的英文翻译 为了解决这个问题,我阅读了更多关于Python的XML文档,并开始尝试使用tree.write,但这正是我陷入困境的地方。当我使用它时,XML文件中包含了汉字的UTF代码,而不是实
<Texts Type="Story">
<List>
<Text Name="TradeAuction">
<DisplayName>拍卖会</DisplayName>
<Desc>[NAME]来到了[PLACE],发现此地有个拍卖行。</Desc>
<Selections.0.Display>参与拍卖</Selections.0.Display>
<Selections.1.Display>离去</Selections.1.Display>
</Text>
</List>
</Texts>
其输出如下所示:
<Texts Type="Story">
<List>
<Text Name="TradeAuction">
<DisplayName>拍賣會(auctions)</DisplayName>
<Desc>[NAME]來到了[PLACE],發現此地有個拍賣行。([NAME] came to [PLACE] and found an auction house here.)</Desc>
<Selections.0.Display>參與拍賣(Participate in the auction)</Selections.0.Display>
<Selections.1.Display>離去(Leave)</Selections.1.Display>
</Text>
</List>
</Texts>
<Texts Type="Story">
<List>
<Text Name="TradeAuction">
<DisplayName>拍賣會(auctions)</DisplayName>
<Desc>[NAME]來到了[PLACE],發現此地有個拍賣行。([NAME] came to [PLACE] and found an auction house here.)</Desc>
<Selections.0.Display>參與拍賣(Participate in the auction)</Selections.0.Display>
<Selections.1.Display>離去(Leave)</Selections.1.Display>
</Text>
</List>
</Texts>
它的输出如下所示:
<Texts Type="Story">
<List>
<Text Name="TradeAuction">
<DisplayName>拍賣會(auctions)</DisplayName>
<Desc>[NAME]來到了[PLACE],發現此地有個拍賣行。([NAME] came to [PLACE] and found an auction house here.)</Desc>
<Selections.0.Display>參與拍賣(Participate in the auction)</Selections.0.Display>
<Selections.1.Display>離去(Leave)</Selections.1.Display>
</Text>
</List>
</Texts>
<Texts Type="Story">
<List>
<Text Name="TradeAuction">
<DisplayName>拍賣會(auctions)</DisplayName>
<Desc>[NAME]來到了[PLACE],發現此地有個拍賣行。([NAME] came to [PLACE] and found an auction house here.)</Desc>
<Selections.0.Display>參與拍賣(Participate in the auction)</Selections.0.Display>
<Selections.1.Display>離去(Leave)</Selections.1.Display>
</Text>
</List>
</Texts>
拍賣會(拍卖)
[姓名]和#20358到了[地点]及65292 ;發現此地有個拍賣行。([姓名]来到[地点]并在这里找到一家拍卖行。)
參與拍賣(参加拍卖)
離去(离开)
任何帮助都将不胜感激。我想,一旦我弄明白了这一点,我就应该能够顺利完成剩下的翻译工作
tree.write('/home/dave/zh-TW-final/Settings/MapStories/MapStory_Auction.xml')
根据:
write(文件,encoding=“us ascii”,xml\u声明=None,默认名称空间=None,method=“xml”,*,short\u empty\u elements=True)
输出为字符串(str)或二进制(字节)。这由编码参数控制。如果编码为“unicode”,则输出为字符串;否则,它是二进制的。请注意,如果是打开的文件对象,则这可能与文件类型冲突;确保不要尝试将字符串写入二进制流,反之亦然
因此,我们只需要适当地设置编码
参数。以ASCII格式写入意味着需要对非ASCII字符进行实体转义(拍;
等)(当然,它仍然可以毫无问题地写入文件,因为为文件指定的UTF-8编码是ASCII透明的。)