将混合字符串(ASCII,Unicode)输出到文件

时间:2019-02-21 10:25:31

标签: python

我在python 2.7代码段中有一个字符串结果,并希望输出到文件中。

我输出到屏幕,文本看起来很好,但是文件被截断了,丢弃了文本的unicode部分。我尝试了各种转换模块,但找不到。

字符串是:

Feb 21 10:10   Will arrive control XX min

字符串上的repr()type()的输出是:

repr u'Feb 21 10:10   W\x00i\x00l\x00l\x00 a\x00r\x00r\x00i\x00v\x00e \x00c\x00o\x00n\x00t\x00ro\x00l\x00 \x00X\x00X\x00 m\x00i\x00n'
<type 'str'>

我在文件或指导中得到的内容被截断:

Feb 21 10:11   W

我已经尽力在搜索中找到所有可能的内容,并且一定缺少我认为的简单内容。我不喜欢编码python,这是一个单独的项目。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

我已经做了类似的事情,并且正在工作:

>>> s = u'Feb 21 10:10   W\x00i\x00l\x00l\x00 a\x00r\x00r\x00i\x00v\x00e \x00c\x00o\x00n\x00t\x00ro\x00l\x00 \x00X\x00X\x00 m\x00i\x00n'
>>> f = open('test.txt', 'wb')
>>> f.write(s.encode())
>>> exit()
$ cat test.txt
Feb 21 10:10   Will arrive control XX min

但是当我没有二进制文件时

>>> s = u'Feb 21 10:10   W\x00i\x00l\x00l\x00 a\x00r\x00r\x00i\x00v\x00e \x00c\x00o\x00n\x00t\x00ro\x00l\x00 \x00X\x00X\x00 m\x00i\x00n'
>>> f = open('test.txt', 'w')
>>> f.write(s)
$ cat test.txt
Feb 21 10:10   Will arrive control XX min

一切看起来都很好,所以我不知道你在做什么错。也许您的文本查看器感觉不太好?

答案 1 :(得分:0)

非常感谢-我按照建议尝试了以下内容:-

pi@raspberrypi:~/md380tools $ python
Python 2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = u'Feb 21 10:10   W\x00i\x00l\x00l\x00 a\x00r\x00r\x00i\x00v\x00e \x00c\x00o\x00n\x00t\x00ro\x00l\x00 \x00X\x00X\x00 m\x00i\x00n'
>>> f = open('test.txt', 'wb')
>>> f.write(s.encode())
>>> exit()
pi@raspberrypi:~/md380tools $ more test.txt
Feb 21 10:10   W
pi@raspberrypi:~/md380tools $ cat test.txt
Feb 21 10:10   Will arrive control XX minpi@raspberrypi:~/md380tools $

因此通过“更多”查看文件似乎存在问题?我必须承认,我不明白为什么猫能工作,而更多却不起作用

再次感谢

汤姆