此代码按预期工作。唯一的问题是,若有unicode字符,它将被转换成ASCII。在
with open('test.idx', 'w') as writefile:
with open('test.dat') as myfile:
mystr=myfile.read()
for myword in mystr.split('|'):
tow=myword, '|', mystr.index(myword)
print >>writefile, tow
In [74]: !cat test.dat
UTF-8
जनन|1
जन्म देणे
शिक्षण|1
क्षेत्रातील संशोधनाच्या बाजारीकरणा बाबतीत व्यक्त केलेली
पूर्व|1
पगड्यामुळे
In [75]: !cat test.idx
('UTF-8\n\xe0\xa4\x9c\xe0\xa4\xa8\xe0\xa4\xa8', '|', 0)
我希望看到unicode而不是转义代码。在
当您在元组中存储数据时,您看到的是repr表示。以匹配预期的输出使用结构连接公司名称:
输出文件将包含:
^{pr2}$如果在代码中添加一个
print(tow)
,您将看到有元组。在您还有utf-8编码的字符串,而不是unicode,如果您从tow打印各个元素,您也会看到正确的输出。在
您创建了一个元组:
这不是字符串对象,而是一个包含三个其他对象的元组,其中两个是字符串,一个是整数。在
当你把这个元组写入文件时,Python必须把它转换成一个字符串。转换任何Python容器(tuple、list、set或dictionary)都将使用包含对象的
repr()
表示。对于字符串,这意味着只允许和显示可打印的ASCII字符,其他所有字符都使用转义序列,通常是\xhh
形式。在如果这不是您的用例的正确输出,您需要自己进行字符串转换。可以使用字符串格式:
^{pr2}$如果您正在生成大量
|
分隔的数据,那么您可能需要查看csv
模块来处理分隔符和文件写入。在相关问题 更多 >
编程相关推荐