我正在学习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',"")
主要名单也是如此。 我该怎么做呢?
答案 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')