Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将列表映射到整数_Python_String_List - Fatal编程技术网

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
对整数很有效。不过,我注意到我需要对浮点数执行此操作。@Tjorriemorrie
isdigit
如果删除空格,并且整数为正,则效果很好。谢谢,但是
isdigit
对整数效果很好。不过,我注意到我需要对浮点数执行此操作。@Tjorriemorrie
isdigit
如果删除空格,且整数为正,则效果良好。