如何删除列表中的负号?
How to remove the negative sign in a list?
我正在尝试删除 premier_league
中 index[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
旁注:我认为利物浦应该在您的列表中排在第一位,永远是 ;)
我正在尝试删除 premier_league
中 index[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
旁注:我认为利物浦应该在您的列表中排在第一位,永远是 ;)