使用Python从字符串中删除不间断空格

2024-09-28 01:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中遇到了一些非常基本的字符串问题(我无法解决)。基本上,我试着做以下事情:

'# read file into a string 
myString =  file.read()

'# Attempt to remove non breaking spaces 
myString = myString.replace("\u00A0"," ")

'# however, when I print my string to output to console, I get: 
Foo **<C2><A0>** Bar

我以为“\u00A0”是unicode不间断空格的转义码,但显然我做得不正确。你知道我做错了什么吗?


Tags: to字符串readstring事情replaceremovefile
3条回答

在给一个旧问题添加另一个答案之前,我犹豫不决,但是由于Python3将Unicode“不间断空格”字符计算为空白字符,并且由于字符串默认为Unicode,所以可以使用joinsplit来去掉字符串中的不间断空格,如下所示:

s = ' '.join(s.split())

当然,这也会改变任何其他空格(制表符、换行符等)。注意这只是Python3号。

不,u"\u00A0"是不间断空格的转义代码。"\u00A0"是6个字符,它们不是任何类型的转义代码。Read this

您没有unicode字符串,而是一个UTF-8字节列表(这是Python 2.x中的字符串)。

试试看

myString = myString.replace("\xc2\xa0", " ")

最好是切换到unicode——请参见this article以获取想法。所以你可以说

uniString = unicode(myString, "UTF-8")
uniString = uniString.replace(u"\u00A0", " ")

而且它也应该可以工作(注意:我现在还没有Python 2.x),尽管在将它发送到文件或打印到屏幕时,需要将它转换回字节(二进制)。

相关问题 更多 >

    热门问题