如何删除列表中的负号?

How to remove the negative sign in a list?

我正在尝试删除 premier_leagueindex[2] 之前的所有负号:

我的代码:

premier_league = [
             ['A1','Manchester City', '-1', 'Aguero'],
             ['A2','Manchester City', '-11,2', 'Mahrez'],
             ['A3','Manchester City', '-13,5', 'Sterling'],
             ['B1','Liverpool', '-,5', 'Mane'],
             ['B2','Liverpool', '-5,6', 'Salah'],
             ['B3','Liverpool', '-7,2', 'Jota']]

for l in premier_league:
    del l[-2][0]

当前输出:

TypeError: 'str' object doesn't support item deletion

期望输出:

premier_league = [
             ['A1','Manchester City', '1', 'Aguero'],
             ['A2','Manchester City', '11,2', 'Mahrez'],
             ['A3','Manchester City', '13,5', 'Sterling'],
             ['B1','Liverpool', ',5', 'Mane'],
             ['B2','Liverpool', '5,6', 'Salah'],
             ['B3','Liverpool', '7,2', 'Jota']]

str.strip() 将从您调用它的字符串的任一侧删除空格。您可以选择给它一个字符串,它会从字符串的两边删除所有这些字符。

它的派生词 str.lstrip()str.rstrip() 将执行相同的操作,但分别只针对字符串的左端或右端。在这种情况下,由于您想从前面删除减号,因此 str.lstrip() 是可行的方法。

for l in premier_league:
    l[2] = l[2].lstrip('-')

尝试将值设置为其绝对值:

for l in premier_league:
   i = str(l[2]).replace(',','.')
   i = abs(i)
   i = i.replace('.',',')
   l[2] = float(i)

...但我考虑了一下,这看起来太麻烦了所以我怀疑 lstriping '-' 可能更容易

使用嵌套 list comprehensions and re.sub:

import re
premier_league = [[re.sub(r'^-', '', item) for item in x] for x in premier_league]

您可以使用 str.strip() 或者您可以转换为列表并分割“-”

for l in premier_league:
    if l[2].startswith('-'): #not sure if all start with - or not
       temp=list(l[2])[1:] #convert to list and slice
       l[2]=''.join(temp) #to return it to string again

旁注:我认为利物浦应该在您的列表中排在第一位,永远是 ;)