需要将带有指数的字符串写入文件

时间:2016-08-09 23:02:28

标签: python ascii

我需要将英尺(ft ** 3)写入一个文件,该文件将由另一个程序读取,其中3是上标。当我从示例输入文件(例如:ft³)剪切并粘贴我需要的文本并尝试保存脚本时,它说:

“使用”ascii“编码对文件[filename]进行编码会导致信息丢失。你要继续吗?”

我使用的命令是:

f.write('Units ft³\n')

我将失去什么样的信息?如何从我的脚本到我的输入文件写'ft³'(我假设用ascii格式?)?我甚至不确定从哪里开始,所以任何信息都会受到赞赏。

如果有任何不同,我正在使用PyScripter IDE。

3 个答案:

答案 0 :(得分:1)

Joran的选项适用于我的文本编辑器,但不幸的是,当我尝试用程序打开输入文件时,它会作为替换字符( )出现。该程序使用Micr $ oft File.ReadAllLines方法,因此如果文本以utf8编码,它应该能够读取文本,对吗?

file.write('units ft'+'\xb3'+'/day\n'.encode('utf8'))

不幸的是,当我尝试在程序中打开文件时,我仍然在获取替换字符。输入文件在文本编辑器中看起来很好,当我从文本编辑器剪切并粘贴该行时:

Units ft³/day

回答Mephy的问题:当我从现有的输入文件中复制ft³/ day字符串并将其粘贴到我的python脚本中时,出现了关于ASCII字符的错误,希望python以与程序读取它相同的方式编写它。 ..但那也不起作用。当我在UltraEdit中进行文件比较时,报告的行是相同的,但程序将读取它生成的行,但不是我生成的python脚本。如果我将单位改为没有指数的东西(即英尺 - 英尺),它就可以正常工作。

(为了澄清,我是发布原文的用户。但是,我丢失了该帐户的密码,无法合并这两个帐户。)

答案 1 :(得分:0)

String::replaceAll

您可以执行此操作,大多数测试编辑

会识别这些内容

答案 2 :(得分:0)

好的,问题解决了。谢谢你指出我正确的方向Joran。虽然我不确定为什么我必须.encode('utf8')字符串,因为你所说的\xb3已经在utf8中了。但我尝试过并尝试过没有.encode('utf8')的情况下无法工作。

在第二篇文章中,我编写了错误的字符串部分。其中任何一个都有效:

f.write('Units ft'+u'\xb3'.encode('utf8')+'/day\n')

encode('utf8')整行:

f.write(('Units ft'+u'\xb3'+'/day\n').encode('utf8'))

是一个优先于另一个吗?