我需要从字符串类型转换为数字
list = ["-5","4","-3","variable"] # Input
list = [-5,4,-3,"variable"] # epected output
Run Code Online (Sandbox Code Playgroud)
我在转换负数时遇到问题
list[0]=int(list[0])
Run Code Online (Sandbox Code Playgroud)
ValueError:int() 的无效文字,基数为 10:'-5'
实际上,我无法重现您的错误,它仅适用于 python 2.7.13
>>>int("-5")
>>> -5
Run Code Online (Sandbox Code Playgroud)
并在python 3.4中
所以,这可能是 python 版本问题,我建议更新你的 python 版本,通过从站点重新安装较新的版本,它将完美地替换它(包未受影响),除非你使用的是像 anaconda 这样的特殊发行版..
处理您的列表(混合字符和数字)使用:
try: except:
陈述。
我在matplotlib xticklabels Text 属性中遇到了这个问题。负数的减号被编码为“减号”:
[?] 是一个减号(Unicode 2212)。
减号:[&minus]; 又名 [−]; 又名 [−];
Python 似乎将减号编码为“连字符减号”,Unicode 002D:
[-] 是连字符减号(ASCII 键盘,Unicode 002D)
连字符减号:[-]; 又名 [-];
下面是一个例子:
>> import matplotlib.pyplot as plt
>> import re
>> x = [0,1,2,3,4,5]
>> y = [0,1,2,1,2,1]
>> fig,ax = plt.subplots(1)
>> plt.plot(x,y)
Run Code Online (Sandbox Code Playgroud)
如果我们尝试获取 xticklabels,如果我们想手动编辑它们,我们使用:
>> l = ax.get_xticklabels()
>> ticks = [i.get_text() for i in l]
>> print(ticks)
['?1', '0', '1', '2', '3', '4', '5', '6']
>> ord(ticks[0])
8722
Run Code Online (Sandbox Code Playgroud)
尝试将其转换为整数:
>> l = ax.get_xticklabels()
>> ticks = [int(i.get_text()) for i in l]
ValueError: invalid literal for int() with base 10: '?1'
Run Code Online (Sandbox Code Playgroud)
这与问题中的错误相同,其他人很难重现。要修复它,请使用正则表达式:
ticks = [int(re.sub(u"\u2212", "-", i.get_text())) for i in l]
print(ticks)
print(ticks[0] - 1)
[-1, 0, 1, 2, 3, 4, 5, 6]
-2
>> ord(ticks[0])
45
Run Code Online (Sandbox Code Playgroud)
小智 0
我不知道如何替换列表中的值,您必须自己找出答案。这段代码在这里
abc = "abcdefghijklmnopqrstuvwxyz" #to make sure there are no letters in the string
list = ["-5","4","-3","variable"]
def MightWork(list):
newlist = []
for item in list:
if set(abc) & set(list[item]) = False:
newlist.append(int(list[item]))
return newlist
list = MightWork(list)
Run Code Online (Sandbox Code Playgroud)
可能会起作用。您的代码不起作用的原因是您将整个列表更改为字符串,而不是列表中的每个单独项目。知道了这一点,如果您有更好的解决方案,请尝试一下。
| 归档时间: |
|
| 查看次数: |
25176 次 |
| 最近记录: |