如何删除插入(几种情况)中的额外符号(\n,\t,\xa0)



在dict中粘贴字符串后解析数据时,它会用\n,\t\ta0显示这些字符串

我想清理我的内部字符串,我该怎么做?

我知道我可以使用replace((,但它只有一个参数可以交换。我需要几个条件来清洁它们。

示例:'red':'\n\nJ。Rivera\xa0','blue':'\xa0I。Alcântara\n\t\t\t\t\t\t\t\t\t\xa0'

试试这个

dict1 = {'red': 'nnJ. Riveraxa0', 'blue': 'xa0I. Alcântaranntttttttttxa0'}
dict1  = {a:" ".join(b.split()) for a, b in dict1.items()}

正如我所看到的,您的字符串具有xa0,即space " "unicode值。所以我想建议下面的方法,你们可以看到明显的区别。

import unicodedata
import re
def normalize_string(given):
regex = re.compile(r'[nrt]')
return re.sub(regex, "", unicodedata.normalize("NFKD", given))

dict1 = {'red': 'nnJ. Riveraxa0', 'blue': 'xa0I. Alcântaranntttttttttxa0'}
print("dict1 " ,dict1)
dict2  = {a:" ".join(b.split()) for a, b in dict1.items()}
print("dict2 " ,dict2)
dict3 = {k: normalize_string(v) for k, v in dict1.items()}
print("dict3 " ,dict3)

输出如下

dict1  {'red': 'nnJ. Riveraxa0', 'blue': 'xa0I. Alcântaranntttttttttxa0'}
dict2  {'red': 'J. Rivera', 'blue': 'I. Alcântara'}
dict3  {'red': 'J. Rivera ', 'blue': ' I. Alcântara '}

只需要简单调用字符串strip方法。

data = {'red': 'nnJ. Riveraxa0', 'blue': 'xa0I. Alcântaranntttttttttxa0'}
data = {k: v.strip() for k, v in dict1.items()}
print(data)

这将给你{'red': 'J. Rivera', 'blue': 'I. Alcântara'}

最新更新