如何删除列表中项目中的字符(Python)

时间:2018-04-20 23:51:39

标签: python python-3.x list

我正在学习python而且我已经制作了一个快速成绩计算器,用于检查每日等级的第一个字母是D,还是主要等级的M(Major的重量与每日不同)。但是,一旦我将它移动到各自的列表,我需要实际删除D和M.我该怎么做呢?帮我一个忙,保持简单:D。

grades = ['D 85', 'D 100', 'M 20', 'D 70']

我的代码将每日成绩列入正确的列表,反之亦然。

Daily = ['D 85', 'D 100', 'D 70']
Major = ['M 20']

现在我需要从列表中的每个项目中删除D和M. daily.replace没有用,我试了一下

for i in list: 
   for c in i:
      newdaily.replace('D',"")

主要名单也是如此。 我该怎么做呢?

5 个答案:

答案 0 :(得分:2)

看起来你真的要分裂字符串并取两部分中的第二部分。如果您使用单个字符串,则可以使用

执行此操作
'D 85'.split()[1] # "85"

要对整个列表执行此操作:

grades = ['D 85', 'D 100', 'M 20', 'D 70']
numeric_grades = [g.split()[1] for g in grades]

知道上面没有任何内容可以将字符串转换为int,但可以轻松添加

numeric_grades = [int(g.split()[1]) for g in grades]

答案 1 :(得分:1)

这不是替换的问题,而是一个字符串切割。根据我的理解,你想要削减第一个或第二个字符?

grade = "D 85"
grade[2:]
> "85"

String是一个数组,你可以要求它的一部分。 [2:]表示自第三个(我们从0开始计算)字符到结束。

编辑: 要处理所有成绩并删除第一个字符并将结果存储在新列表(gradesClean)中:

grades = ["D85", "D100", "M20", "D70"]
gradesClean = []
for g in grades:
    gradesClean.append(g[1:])

gradesClean
> ['85', '100', '20', '70']

答案 2 :(得分:1)

你可以尝试这样的事情。

raw_grades = ["D 85", "D 100", "M 20", "D 70"]
chars_to_replace = ["D", "M"]

sanitized_grades = []

for i in raw_grades:
    for char in chars_to_replace:
        i = i.replace(char,"")

    sanitized_grades.append(i.strip())

print(sanitized_grades) # ['85', '100', '20', '70']

希望这有帮助。

答案 3 :(得分:0)

In-buit strip()函数在这里也可以使用list-comprehension。

>>> grades = ["D 85", "D 100", "M 20", "D 70"]
>>> grades_num = [ele.strip('D ').strip('M ') for ele in raw_grades]
['85', '100', '20', '70']  # output

答案 4 :(得分:-1)

您可以使用remove 例如:

list=['A','B','C']

list.remove('A')