为了账号安全,请及时绑定邮箱和手机立即绑定

如何仅替换 Python 列表中以某个字母开头的文本?

如何仅替换 Python 列表中以某个字母开头的文本?

慕神8447489 2021-11-02 15:40:08
我的问题类似于excel 公式来替换或仅替换以某个字母开头的文本,但我需要一个 Python 代码。我正在尝试嵌套 if 但它只替换第一个字符而不是整个元素。元素也是字母数字List= ['F43.9', 'F53.2', 'H10.9', 'H60.9',        'S83.6', 'S01.88', 'J18.9', 'K35.9', 'S42.20', 'J06.9'....]所以我想要的输出是:List= ['qwe', 'qwe', 'equal', 'equal', 'chronic', 'chronic', 'liable', 'priority', 'chronic', 'liable',...]我需要替换F以F43.9,F53.2,etc.开头的所有值。与"qwe". 对于不同的字母也类似。列表中有 30,000 个元素,有 600 个唯一值。
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

您的新编辑表明您要替换整个单词。只需检查元素是否是startswith()您期望的字符,然后将其替换为所需的字符串。不过,这可能会变得有点健壮,因此您最好使用字典。



for i in range(0, len(list)):

    if list[i].startswith('F'):

        list[i] = 'qwe'

    elif list[i].startswith('H'):

        list[i] = 'equals'

    elif list[i].startswith('S'):

        list[i] = 'chronic'


map = {

    'F': 'qwe',

    'H': 'equals'

    'S': 'chronic'

     # etc etc

}


for i in range(0, len(list)):

    if list[i][0] in map.keys():    # check if first char is a key in map

        list[i] = map[list[i][0]]   # if it is, replace list[i] with the value in map


查看完整回答
反对 回复 2021-11-02
?
慕慕森

TA贡献1856条经验 获得超17个赞

通过使用列表理解,我们可以通过以下方式实现:


new_list = ['qwe' + List[i][1:] if List[i].startswith('F') else List[i] for i in range(len(List)) ]

print(new_list)

['qwe43.9','qwe53.2','H10.9','H60.9', 'S83.6','S01.88','J18.9','K35.9','S42.20',

'J06.9']

您可以将字母“F”替换为字符串中要替换开头字母的任何其他字母


查看完整回答
反对 回复 2021-11-02
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

尝试这个:


for i in range(0, len(list)):

    if list[i].startswith('F'):

        list[i] = 'qwe'

    elif list[i].startswith('H'):

        list[i] = 'chronic'

    elif list[i].startswith('S'):

        list[i] = 'liable'

    else list[i].startswith('J'):

        list[i] = 'priority'


查看完整回答
反对 回复 2021-11-02
  • 3 回答
  • 0 关注
  • 270 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信