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

时间:2019-02-08 04:09:47

标签: python list replace alphanumeric

我的问题类似于excel formula to replace or stubstitute only text that starts with a certain letter,但我需要Python代码。我想做嵌套,但它只替换第一个字符而不是整个元素。

元素也是字母数字

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个唯一值。

4 个答案:

答案 0 :(得分:1)

您的新编辑表示您想替换整个单词。只需检查元素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

答案 1 :(得分:0)

可以使用list-comprehension

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

答案 2 :(得分:0)

通过使用列表理解,我们可以做到这一点:

def unique_elements(a):
    newlist = []
    for i in a:
        if i not in newlist:
                newlist.append(i)
    return newlist

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

答案 3 :(得分:0)

尝试:

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'

等...