我读了一些关于Python写入文本文件的帖子,但是我没有找到解决问题的方法。简而言之,就是这里。在
要求:将由thorn字符(u00FE;并环绕文本值)和pilcrow字符(u00B6;每列后面)分隔的值写入一个带有BOM(FF-FE)的UTF-16LE文本文件。在
问题:写入文本文件的每一列之间都有空白,我没有为之编写脚本。而且,它在UltraEdit中没有出现。只显示第一个值(“mom”)。我欢迎任何见解或建议。在
脚本(简化以便于故障排除;实际脚本使用第三方API获取值列表):
import os
import codecs
import shutil
import sys
import codecs
first = u''
textdel = u'\u00FE'.encode('utf_16_le') #thorn
fielddel = u'\u00B6'.encode('utf_16_le') #pilcrow
list1 = ['mom', 'dad', 'son']
num = len(list1) #pretend this is from the metadata profile
f = codecs.open('c:/myFile.txt', 'w', 'utf_16_le')
f.write(u'\uFEFF')
for item in list1:
mytext2 = u''
i = 0
i = i + 1
mytext2 = mytext2 + item + textdel
if i < (num - 1):
mytext2 = mytext2 + fielddel
f.write(mytext2 + u'\n')
f.close()
你在对你的字符串进行双重编码。您已经以UTF-16-LE的形式打开了文件,所以不要对}字符串进行编码。它们将在写入时与写入文件的每一行一起被编码。在
textdel
和{或者换句话说,
textdel = u'\u00FE'
将textdel
设置为“thorn”字符,而textdel = u'\u00FE'.encode('utf-16-le')
将textdel
设置为该字符的特定序列化形式,即根据该编解码器的字节序列;它不再是字符序列:相关问题 更多 >
编程相关推荐