Python 如何将列表映射到整数
我有一个连接的字符串,由逗号连接。我需要将此列表拆分为一个列表,但列表的类型必须严格按整数Python 如何将列表映射到整数,python,string,list,Python,String,List,我有一个连接的字符串,由逗号连接。我需要将此列表拆分为一个列表,但列表的类型必须严格按整数 doc[column]=map(int,[v代表值中的v.split(','),如果v和len(v)]) ValueError:基数为10的int()的文本无效:“” 我认为添加if v,然后添加len(v)可能会解决问题。我应该怎么做?您需要检查字符串是否仅为数字。您可以使用: 注:以上不接受负整数。要处理它,你需要更多的条件 更新 更新了答案以处理'1'案例: >>> int('
doc[column]=map(int,[v代表值中的v.split(','),如果v和len(v)])
ValueError:基数为10的int()的文本无效:“”
我认为添加
if v
,然后添加len(v)
可能会解决问题。我应该怎么做?您需要检查字符串是否仅为数字。您可以使用:
注:以上不接受负整数。要处理它,你需要更多的条件
更新
更新了答案以处理'1'
案例:
>>> int(' 1')
1
>>> ' 1'.isdigit()
False
>>> ' 1'.strip().isdigit()
True
更新根据OP的评论:
要完成此操作,您需要尝试float
/int
,以查看值是否可转换为类型
例如:
def try_float(x):
try:
float(x)
return True
except (TypeError, ValueError):
return False
value = '1, 2.3, 4, 5, blah, 6.78'
numbers = [float(x) for x in value.split(',') if try_float(x)]
您需要检查字符串是否仅为数字。您可以使用: 注:以上不接受负整数。要处理它,你需要更多的条件 更新 更新了答案以处理
'1'
案例:
>>> int(' 1')
1
>>> ' 1'.isdigit()
False
>>> ' 1'.strip().isdigit()
True
更新根据OP的评论:
要完成此操作,您需要尝试float
/int
,以查看值是否可转换为类型
例如:
def try_float(x):
try:
float(x)
return True
except (TypeError, ValueError):
return False
value = '1, 2.3, 4, 5, blah, 6.78'
numbers = [float(x) for x in value.split(',') if try_float(x)]
创建一个命名良好的函数:
def converts_to_int(value):
try:
int(value)
return True
except ValueError:
return False
使用列表理解比使用地图短:
doc[column] = [int(v) for v in value.split(',') if converts_to_int(v)]
创建一个命名良好的函数:
def converts_to_int(value):
try:
int(value)
return True
except ValueError:
return False
使用列表理解比使用地图短:
doc[column] = [int(v) for v in value.split(',') if converts_to_int(v)]
@jonrsharpe,谢谢你的评论。我更新了答案。@behzad.nouri,谢谢你指出这一点。我更新了答案,用
str.strip
来处理这个问题。谢谢,我以为isdigit只用于char,我的错。对于浮动,我也需要这样做,但我意识到,isdigit
那时不起作用。有处理那个案子的线索吗?@Tjorriemorrie,这个怎么样?(尝试float
并在自定义函数中捕获异常)@jornsharpe,感谢您的评论。我更新了答案。@behzad.nouri,谢谢你指出这一点。我更新了答案,用str.strip
来处理这个问题。谢谢,我以为isdigit只用于char,我的错。对于浮动,我也需要这样做,但我意识到,isdigit
那时不起作用。有处理那个案子的线索吗?@Tjorriemorrie,这个怎么样?(尝试float
并在自定义函数中捕获异常)将if v和len(v)
更改为if v.strip()
将if v和len(v)
更改为if v.strip()
谢谢,但是isdigit
对整数很有效。不过,我注意到我需要对浮点数执行此操作。@Tjorriemorrieisdigit
如果删除空格,并且整数为正,则效果很好。谢谢,但是isdigit
对整数效果很好。不过,我注意到我需要对浮点数执行此操作。@Tjorriemorrieisdigit
如果删除空格,且整数为正,则效果良好。