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)