Types Python:测试值是否可以在列表中转换为int

Types Python:测试值是否可以在列表中转换为int,types,casting,int,python,Types,Casting,Int,Python,基本上我想这样做 return [ row for row in listOfLists if row[x] is int ] 但行[x]是一个文本值,可以转换为int,也可以不转换为int 我知道这可以通过以下方式实现: try: int(row[x]) except: meh 但如果是一行就好了 有什么想法吗?如果只处理整数,可以使用: 如果字符串中的所有字符都是数字且至少有一个字符,则返回true,否则返回false 或者如果可以使用负整数(但应允许): 当然,只有在没

基本上我想这样做

return [ row for row in listOfLists if row[x] is int ]
但行[x]是一个文本值,可以转换为int,也可以不转换为int

我知道这可以通过以下方式实现:

try:
    int(row[x])
except:
    meh
但如果是一行就好了


有什么想法吗?

如果只处理整数,可以使用:

如果字符串中的所有字符都是数字且至少有一个字符,则返回true,否则返回false

或者如果可以使用负整数(但应允许):


当然,只有在没有前导或尾随空格字符(也可以去掉)的情况下,这一切才有效。

使用正则表达式怎么样?(如果需要,使用
重新编译
):

或者如果你需要接受负整数

return filter(lambda y: y[x].lstrip('-').isdigit(), listOfLists)

虽然列表理解很有趣,但我发现在这种情况下不太清楚。

仅适用于非负整数,因为
-
不是数字。但如果可行的话,这可能是最好的解决方案。否则,允许前导
-
的正则表达式几乎同样可读。
.lstrip('-')
不会给出错误的(读取:
abs
'd)结果吗?很可能不是OP想要的。@delnan:这只是为了测试。原始值被保留(或者我不理解您的评论)。请注意,
.lstrip('-')
将去掉多个前导连字符,从而得出结论,
'-1'
是一个有效数字。
row[x].lstrip('-').isdigit()
import re
...
return [row for row in listOfLists if re.match("-?\d+$", row[x])]
return filter(lambda y: y[x].isdigit(), listOfLists)
return filter(lambda y: y[x].lstrip('-').isdigit(), listOfLists)