加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何更有效地将字符串中的多个字符映射到单个字符?

发布时间:2020-12-20 12:15:07 所属栏目:Python 来源:网络整理
导读:我正在寻找一种更有效的方法来将字符串中的多个字符替换为单个字符. 目前,我的代码看起来类似于以下内容: example = 'Accomodation'VOWELS = 'aeiou'CONSONANTS = 'bcdfghjklmnpqrstvwxyz'output = ''for char in example: if char in VOWELS: output += 'v
我正在寻找一种更有效的方法来将字符串中的多个字符替换为单个字符.

目前,我的代码看起来类似于以下内容:

example = 'Accomodation'

VOWELS = 'aeiou'
CONSONANTS = 'bcdfghjklmnpqrstvwxyz'

output = ''
for char in example:
    if char in VOWELS:
        output += 'v'
    elif char in VOWELS.upper():
        output += 'V'
    elif char in CONSONANTS:
        ....

最后,在示例的情况下,它将返回Vccvcvcvcvvc.

我想提高效率的部分是这样的:

for char in example:
    if char in VOWELS:
        output += 'v'
    elif char in VOWELS.upper():
        output += 'V'
    elif char in CONSONANTS:
        ....

理想情况下,解决方案允许将字符字典映射为键,其值为选项列表.例如.

replace_dict = {'v': VOWELS,'V': VOWELS.upper(),'c': CONSONANTS,...

不幸的是我对地图不太熟悉,但我希望解决方案能以某种方式利用它.

研究

我发现了类似的问题:python replace multiple characters in a string

这表明我必须做以下事情:

target = 'Accomodation'
charset = 'aeioubcdfghjklmnpqrstvwxyzAEIOUBCDFGHJKLMNPQRSTVWXYZ'
key = 'vvvvvcccccccccccccccccccccVVVVVCCCCCCCCCCCCCCCCCCCCC'

对我来说,问题是分配看起来并不是特别清楚 – 尽管它保存了一块if / else语句.另外,如果我想添加更多字符集,则分配将变得越来越不可读,例如对于不同的外国字符集.

任何人,或许对内置函数有更广泛的知识,能否产生一个比上述两个例子更有效/更干净的例子?

我也对其他不需要使用字典的想法持开放态度.

解决方案应该在python3中.

解决方法

创建这样一个词典有更有效的方法:

example = 'Accomodation'

VOWELS = 'aeiou'
CONSONANTS = 'bcdfghjklmnpqrstvwxyz'

replace_dict = {
    **{v: 'v' for v in VOWELS},**{V: 'V' for V in VOWELS.upper()},**{c: 'c' for c in CONSONANTS}
}

print(''.join(replace_dict[s] for s in example))

# Vccvcvcvcvvc

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读