Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中更改文件中的字符串_Python_String_Python 2.7_Replace - Fatal编程技术网

在python中更改文件中的字符串

在python中更改文件中的字符串,python,string,python-2.7,replace,Python,String,Python 2.7,Replace,我在用python更改文件时遇到问题。我需要换一个字符串。 该文件不是文本文件,但可以使用文本编辑器进行编辑 这是我的密码: with open(esp,"r") as f: content=f.readlines() with open(esp_carsat,"w") as f: for line in content: f.write(line.replace("201"

我在用python更改文件时遇到问题。我需要换一个字符串。 该文件不是文本文件,但可以使用文本编辑器进行编辑

这是我的密码:

with open(esp,"r") as f:                
            content=f.readlines()         
with open(esp_carsat,"w") as f:
        for line in content:
                f.write(line.replace("201","202")))
问题是我认为内容是字节。 “\xff\xfe\x00\r\x00\n”

所以我的替代品不起作用了。我尝试过使用编码,但之后文件不可读。此外,我在文件中有重音符号(è,è…)

有什么方法可以满足我的要求吗?

您有UTF-16编码的数据。解码为Unicode文本,替换,然后再次编码回UTF-16:

>>> data = '\xff\xfe<\x00I\x00n\x00s\x00t\x00a\x00n\x00c\x00e\x00N\x00a\x00m\x00e\x00s\x00>\x00\r\x00\n\x00'
>>> data.decode('utf16')
u'<InstanceNames>\r\n'
您有UTF-16编码的数据。解码为Unicode文本,替换,然后再次编码回UTF-16:

>>> data = '\xff\xfe<\x00I\x00n\x00s\x00t\x00a\x00n\x00c\x00e\x00N\x00a\x00m\x00e\x00s\x00>\x00\r\x00\n\x00'
>>> data.decode('utf16')
u'<InstanceNames>\r\n'
您有UTF-16编码的数据。解码为Unicode文本,替换,然后再次编码回UTF-16:

>>> data = '\xff\xfe<\x00I\x00n\x00s\x00t\x00a\x00n\x00c\x00e\x00N\x00a\x00m\x00e\x00s\x00>\x00\r\x00\n\x00'
>>> data.decode('utf16')
u'<InstanceNames>\r\n'
您有UTF-16编码的数据。解码为Unicode文本,替换,然后再次编码回UTF-16:

>>> data = '\xff\xfe<\x00I\x00n\x00s\x00t\x00a\x00n\x00c\x00e\x00N\x00a\x00m\x00e\x00s\x00>\x00\r\x00\n\x00'
>>> data.decode('utf16')
u'<InstanceNames>\r\n'
这是UTF-16-LE数据:

>>> b
'\xff\xfe<\x00I\x00n\x00s\x00t\x00a\x00n\x00c\x00e\x00N\x00a\x00m\x00e\x00s\x00>\x00\r\x00\n'
>>> print(b[:-1].decode('utf-16-le'))
<InstanceNames>
>b
“\xff\xfe\x00\r\x00\n”
>>>打印(b[:-1]。解码('utf-16-le'))
这是UTF-16-LE数据:

>>> b
'\xff\xfe<\x00I\x00n\x00s\x00t\x00a\x00n\x00c\x00e\x00N\x00a\x00m\x00e\x00s\x00>\x00\r\x00\n'
>>> print(b[:-1].decode('utf-16-le'))
<InstanceNames>
>b
“\xff\xfe\x00\r\x00\n”
>>>打印(b[:-1]。解码('utf-16-le'))
这是UTF-16-LE数据:

>>> b
'\xff\xfe<\x00I\x00n\x00s\x00t\x00a\x00n\x00c\x00e\x00N\x00a\x00m\x00e\x00s\x00>\x00\r\x00\n'
>>> print(b[:-1].decode('utf-16-le'))
<InstanceNames>
>b
“\xff\xfe\x00\r\x00\n”
>>>打印(b[:-1]。解码('utf-16-le'))
这是UTF-16-LE数据:

>>> b
'\xff\xfe<\x00I\x00n\x00s\x00t\x00a\x00n\x00c\x00e\x00N\x00a\x00m\x00e\x00s\x00>\x00\r\x00\n'
>>> print(b[:-1].decode('utf-16-le'))
<InstanceNames>
>b
“\xff\xfe\x00\r\x00\n”
>>>打印(b[:-1]。解码('utf-16-le'))

开头的
\xff\xfe
字节是字节顺序标记或BOM。数据本身告诉您,此处无需选择小尾端或大尾端。开头的
\xff\xfe
字节是字节顺序标记或BOM。数据本身告诉您,此处无需选择小尾端或大尾端。开头的
\xff\xfe
字节是字节顺序标记或BOM。数据本身告诉您,此处无需选择小尾端或大尾端。开头的
\xff\xfe
字节是字节顺序标记或BOM。数据本身告诉您,这里不需要选择小端或大端。