我目前有一个正在阅读的文件,并将每一行都列入一个列表。该文件如下所示:
A 11 1
B 12 2
C 11 2
使用split()
['A', '11', '1']
但是我如何制作一个包含字符和整数的列表,以便我在下面得到:
['A', 11, 1]
会感激一些帮助!
答案 0 :(得分:3)
您可以使用str.isdigit
检查作为条件表达式条件来获取要生成int
的数字:
[int(i) if i.isdigit() else i for i in line.split()]
例如'-1'.isdigit()
将返回False
,我们可以使用re
进行字符串匹配:
rcomp = re.compile(r'^[+-]?\d+$')
[int(i) if rcomp.search(i) else i for i in str_.split()]
e.g:
In [59]: str_ = 'A 2 3'
In [60]: [int(i) if i.isdigit() else i for i in str_.split()]
Out[60]: ['A', 2, 3]
In [61]: str_ = 'A -3 4 -8'
In [62]: [int(i) if rcomp.search(i) else i for i in str_.split()]
Out[62]: ['A', -3, 4, -8]