python3.x - 这段代码如何Pythonic?
黄舟
黄舟 2017-04-18 09:41:07
[Python讨论组]
def remove_ignore_char(word):
    ignore_char = ['A', 'B', 'C',
           ]
    for char in ignore_char:
        if char in word:
            word = word.replace(char, '')
    return word
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(5)
PHP中文网
from functools import reduce

def remove_ignore_char(s):
    return reduce(lambda s, c: s.replace(c, ''), [s]+['A', 'B'])

python 2 则去掉第一行


import re
def remove_ignore_char(s):
    return re.sub('|'.join(['A', 'B']), '', s)
PHP中文网

此法最简洁了吧~
python3

>>> 'ABCxAxBxFCABxCabc'.translate(''.maketrans('','','ABC'))
'xxxFxabc'
迷茫
import re

def remove_ignore_char(word):
    return re.sub(r'[ABC]', '', word)
伊谢尔伦
你要的解决方案
import string
table = string.maketrans("abcd", "    ")
word = "abcdefg"
word.translate(table)


将上面的代码封装成一个非常通用的函数
def translator(frm="", to="", delete="", keep=None):
    if len(to) == 1:
        to = to * len(frm)
    trans = string.maketrans(frm, to)
    if keep is not None:
        allchars = string.maketrans("", "")
        delete = allchars.translate(allchars, keep.translate(allchars, delete))
    def translate(s):
        return s.translate(trans, delete)
    return translate
abcd_to_empty = translator(frm="abcd", to="    ")
abcd_to_empty(word)
delete_vowels = translator(delete="aoieu")
delete_vowels(word)
del_digits = translator(delete="1234567890")
del_digits("abcdeeeee12223444dkfljadl")
大家讲道理
my $a = "This is aA TestABC"
$a.subst(/[ABC]/, '', :g)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号