如何在Python中获取无多余字符(如\xa0)的SQL查询结果?
当然可以!咱们直接在SQL查询阶段就能把这些烦人的\xa0字符清理掉,完全不用等拿到结果再做后续处理~不同数据库的处理函数略有差别,我给你分几种常见情况说明:
MySQL/MariaDB 解决方案
用REPLACE()函数就行,因为\xa0对应的是Unicode的U+00A0,在MySQL里可以用CHAR(160)来指代这个字符,修改后的查询语句如下:
SELECT REPLACE(title, CHAR(160), '') AS title FROM table;
如果你的数据库用的是utf8mb4字符集,也可以直接用Unicode转义写法:
SELECT REPLACE(title, '\u00A0', '') AS title FROM table;
PostgreSQL 解决方案
PostgreSQL同样用replace()函数,你可以用chr(160)或者Unicode转义来定位\xa0:
SELECT replace(title, chr(160), '') AS title FROM table; -- 或者用Unicode转义的写法 SELECT replace(title, U&'\00A0', '') AS title FROM table;
SQL Server 解决方案
SQL Server里用REPLACE()搭配NCHAR(160)(注意N前缀表示Unicode字符):
SELECT REPLACE(title, NCHAR(160), '') AS title FROM table;
额外小技巧
如果你的title字段里还混有其他不可见空白字符,想一次性清理的话,可以用正则替换函数(注意数据库版本支持情况):
- MySQL 8.0+/MariaDB:
SELECT REGEXP_REPLACE(title, '[[:space:]]', '', 'g') AS title FROM table;
- PostgreSQL:
SELECT REGEXP_REPLACE(title, '\s', '', 'g') AS title FROM table;
不过要注意,这个方法会把**所有空格(包括正常的空格)**都去掉,如果你只想精准清理\xa0,还是用前面的REPLACE方法更合适。
这样修改后,你Python代码里result.fetchall()拿到的结果就已经是没有\xa0的干净内容啦~
内容的提问来源于stack exchange,提问作者rose
相关产品推荐
相关产品推荐

