在python中更改文件中的字符串
我在用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"
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。数据本身告诉您,这里不需要选择小端或大端。