【问题标题】:How to replace only text that starts with a certain letter in Python List?如何仅替换 Python List 中以某个字母开头的文本?
【发布时间】:2019-07-02 07:25:30
【问题描述】:

我的问题类似于excel formula to replace or stubstitute only text that starts with a certain letter,但我需要一个 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 个唯一值。

【问题讨论】:

  • 你能穿上你想要的输出吗
  • 通过遍历列表并检查每个项目来创建一个新列表;如果一个项目以F 开头,则将替换/替换添加到新列表中,否则,添加项目本身。
  • 对不起,我会再次编辑问题
  • 如你所说以'F'开头的字符串将被'qwe'替换,其他的条件是什么?如何确定哪个字符串应该替换为 'equal' 以及哪个字符串应该替换为 'chronic' 等等?您能否提供更多详细信息?

标签: python list replace alphanumeric


【解决方案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

【讨论】:

  • 它给出的输出为 List = ['qwe43.9', 'Z53.2', 'H10.9','H60.9','S83.6',...]但我希望有一个输出,例如 List = ['qwe', 'qwe', 'equal', 'equal', 'chronic', 'chronic', 'liable', 'priority', 'chronic', 'liable ',....]
【解决方案2】:

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

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”替换为字符串中要替换开头字母的任何其他字母。

【讨论】:

  • 我正在处理这个问题,并在我发布答案后看到了 AkshayaNevrekar 的答案。他的回答更加简洁明了。
  • 它给出的输出为 List = ['qwe43.9', 'Z53.2', 'H10.9','H60.9','S83.6',...]但我希望有一个输出,例如 List = ['qwe', 'qwe', 'equal', 'equal', 'chronic', 'chronic', 'liable', 'priority', 'chronic', 'liable ',....]
【解决方案3】:

可以使用list-comprehension

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

【讨论】:

  • 它给出的输出为 ['qwe43.9', 'Z53.2', 'H10.9','H60.9','S83.6',...] 但我希望有一个输出,例如 ['qwe', 'zxcasdasd', 'asdasdaxas', 'vbnvcvvb',...]
【解决方案4】:

试试这个:

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'

等等……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多