[英]How to map a list to integers
我有一個連接字符串,並用逗號連接。 我需要將此列表拆分為一個列表,但是列表的類型必須嚴格由整數組成。
doc[column] = map(int, [v for v in value.split(',') if v and len(v)])
ValueError:以10為底的int()的無效文字:''
我認為添加if v
,然后添加len(v)
可以解決問題。 我應該怎么做?
您需要檢查字符串僅是數字。 您可以使用str.isdigit
:
doc[column] = [int(v) for v in value.split(',') if v.strip().isdigit()]
注意:上面將不接受負整數。 要處理它,您需要更多條件。
更新
更新了答案以處理' 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
使用列表理解比使用map短:
doc[column] = [int(v) for v in value.split(',') if converts_to_int(v)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.