我正在尝试替换{
,\xad
,\xa
。但是下面的代码不能代替它。我想弄清楚为什么不删除它?我什至尝试了逃脱字符。有什么建议吗?谢谢。
lista = ['ISBN{124123{A{112','ISBN{124312412412{D{2352342','AGEWE21\xad13\xadC\xad93872\xa0']
lista = [i for i in lista if not i.replace("\{", "-").replace("\\xad", "-").replace("\\xa", "-").isalpha()]
lista
寻找这样的最终输出:
['ISBN-124123-A-112','ISBN-124312412412-D-2352342','AGEWE21-13-C-93872-0']
答案 0 :(得分:2)
查看构造元素:
[i for i in lista if ...
您检查了字符串的isalpha
适用性,但保留给列表的是i
的原始值!
相反,您想要保留更改后的i
的值;只需进行任何现有的替换,而完全忘记isalpha
检查即可。
[i.replace("\{", "-").replace("\xad", "-").replace("\xa", "-") for i in lista]
请注意,如果字符串中没有出现特殊字符,则只需在最终列表中获取原始字符即可。
答案 1 :(得分:0)
使用单个反斜杠表示文字字符串,并且您无需检查它是否为alpha,因为在您的情况下它始终为false。
const uniqueBy = prop => list => {
const uniques = {}
return list.reduce(
(result, item) => {
if (uniques[item[prop]]) return result
uniques[item[prop]] = item
return [...result, item]
},
[],
)
}
const uniqueById = uniqueBy('id')
uniqueById([
{ id: 1, name: 'one' },
{ id: 2, name: 'two' },
{ id: 1, name: 'one' },
{ id: 3, name: 'three' }
])
答案 2 :(得分:0)
尝试一下
lista = ['ISBN{124123{A{112', 'ISBN{124312412412{D{2352342',
'AGEWE21\xad13\xadC\xad93872\xa0']
print([i.replace("{", "-").replace("\xad", "-").replace("\xa0", "") for i in lista])
它将打印
['ISBN-124123-A-112', 'ISBN-124312412412-D-2352342', 'AGEWE21-13-C-93872']