Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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_Python 3.x_Unicode_Hex - Fatal编程技术网

替换python中的多字节字符

替换python中的多字节字符,python,python-3.x,unicode,hex,Python,Python 3.x,Unicode,Hex,我试着用普通的空格替换从Word复制的不间断空格,但是似乎没有任何东西适合我 我试着把这个空格读成unicode和十六进制,然后用普通的替换掉。据了解,这是一个狭窄的不间断空间,但看起来这个空间不止一个字符 input.html如下所示(前面是2倍窄无中断空间): 我的脚本: 以open('input.html','r+')作为f的: 复制=f.读取() 对于副本中的行: 对于行中的字符: 打印(字符,十六进制(ord(字符)),结束=“”) 打印(报告(字符)、作战需求文件(字符)) 给出输

我试着用普通的空格替换从Word复制的不间断空格,但是似乎没有任何东西适合我

我试着把这个空格读成unicode和十六进制,然后用普通的替换掉。据了解,这是一个狭窄的不间断空间,但看起来这个空间不止一个字符

input.html如下所示(前面是2倍窄无中断空间):


我的脚本:

以open('input.html','r+')作为f的
:
复制=f.读取()
对于副本中的行:
对于行中的字符:
打印(字符,十六进制(ord(字符)),结束=“”)
打印(报告(字符)、作战需求文件(字符))
给出输出:

0xe2–226
0x20ac欧元,8364欧元
Ż0x17b'Ż'379
–0xe2–226
0x20ac欧元,8364欧元
Ż0x17b'Ż'379
n 0x6e'n'110
尝试将空格替换为:

copy.replace(u“\u202f”,“)
复制。替换(“\0xe2\0x20ac\0x17b”,”)
复制。替换(' ', '.')
还有更多的配置,但似乎没有任何实际工作

我希望在html文件中有所有的无中断空格作为普通空格,但我不知道如何做到这一点。

编辑: 将空格替换为:

copyb=字节(复制'utf8')
copyb=copyb.replace(b'\xc3\xa2\xe2\x82\xac\xc5\xbb',b'.)
但是,既然(如果我是对的)copyb是一个对象,我不明白为什么在我的例子中replace()不能以这种方式工作(Python 3.7):

copyb=字节(复制'utf8')
copyb.replace(b'\xc3\xa2\xe2\x82\xac\xc5\xbb',b'.)
此空格包含多个字符

此空格多于一个字节。可以使用UTF8字符

字节与字符串 关于字符串和字节对象之间的区别似乎也有一些混淆。Eli Bendersky有一篇关于字符串和字节对象的好文章。若要引用字节对象中的不可打印字符,请在两个十六进制数前加上\x,例如“\x12”,而不是“\0x12”

对于0xe2,您可能会想到十六进制数,这是一种整数表示:

>>> 0x10
16
更换狭窄的不间断空间 您的问题是关于替换此角色,所以让我们这样做

一串 mystr='a\u202fb' >>>打印(mystr) A. B >>>mystr.replace('\u202f','.')) “a.b” 在字节对象中 mybytes=bytes('a\u202fb','utf8') >>>打印(mybytes) b'a\xe2\x80\xafb' >>>mybytes.replace(b'\xe2\x80\xaf',b') b'a.b'
s.replace('\u202f','')
适合我。但是,您的示例输出看起来像mojibake-您确定您使用了正确的编码来解码输入文件吗?感谢您的精彩解释和文章链接,它真的很有帮助!很高兴听到这个消息!请记住,您的编辑只适用于字符串或ByTestRing,因此“对象”不一定有替换方法。
>>> 0x10
16