如何在Python一行代码中同时使用For、If、Else实现字符替换?
一行代码实现字符替换逻辑
你的原代码逻辑是把字符串中所有非字母数字的字符替换成下划线,要改成一行代码,关键是把循环里的条件判断换成三元表达式嵌入生成器,而不是用过滤型的if。
正确的一行写法如下:
word_not_clean = "Casà: 25$" word_clean = "".join(x if x in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' else '_' for x in word_not_clean)
你之前的代码用的是(x for x in ... if ...),这种是过滤逻辑——只保留符合条件的字符,不符合的直接丢弃,和原代码“替换成下划线”的逻辑不符。而三元表达式x if 条件 else '_'会为每个字符生成对应的值:符合条件就留原字符,不符合就返回下划线,这样join之后就能得到和原代码完全一致的结果。
另外,还可以用字符串的isalnum()方法简化判断,效果和你手动定义的字符集合一样,代码更简洁:
word_clean = "".join(x if x.isalnum() else '_' for x in word_not_clean)
内容的提问来源于stack exchange,提问作者RBenet
相关产品推荐
相关产品推荐

