假设您有输入(命令行参数,txt文件),它包含多种数据类型,如int和str。如果它是一个数字,你如何有效地将每个项目转换为int,如果它是str,则如何str?
示例:
input.txt中
A 1 B C 23
5 D 0 E 2
143 E 6 A 1
输出:
["A",1,"B","C",23]
[5,"D",0,"E",2]
[143,"E",6,"A",1]
使用open()和readlines(),您可以将其存储在变量中并获取:
['A 1 B C 23 \n', '5 D 0 E 2\n', '143 E 6 A 1']
但是从这里开始,如果我想使用strip,我必须指定是否要将所有内容转换为str()或int() - int()将导致错误,因为它无法接受字符串,并且str()只会将所有内容转换为字符串。
答案 0 :(得分:1)
一种选择是使用异常处理:
import sys
def strint (s):
try:
x = int(s)
except:
x = s
return x
for line in sys.stdin:
print([strint(x) for x in line.split()])
使用strint.py
中的上述代码和文件strint.txt
中的示例输入,我们可以运行它以获得以下输出:
$ python strint.py <strint.txt
['A', 1, 'B', 'C', 23]
[5, 'D', 0, 'E', 2]
[143, 'E', 6, 'A', 1]
更复杂的版本会捕获特定的异常,并且可以处理浮点数等。