假设我有一个文本文件,其中包含如下行:
3, 4.32, hi
7, 3.23, hello
当我读入这个文件时,所有条目都被视为字符串。有没有办法将它们自动转换(在我的示例中)为 int、float 和 string?
最佳答案
原始方法:
def guess(text):
for t in text.split(','):
for typ in (int, float, str):
try:
yield typ(t)
break
except ValueError as e:
pass
d = '3, 4.32, hi'
print list(guess(d))
# [3, 4.32, ' hi']
# [<type 'int'>, <type 'float'>, <type 'str'>]
但是 - 如果您知道类型应该是什么,那么这比像这样的暴力强制要好得多...
并且您可以利用 ast
库来完成一些工作,这可能会更灵活,需要更少的 try/except 机制(并且读取起来更容易一些,但确实需要一些预处理输入的工作)
def guess2(text):
from ast import literal_eval
tokens = (t.strip() for t in text.split(','))
for token in tokens:
try:
token_value = literal_eval(token)
token_type = type(token_value)
yield token_value, token_type
except ValueError as e:
yield token, type(token)
关于python:读入表并将每一列转换为正确的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13997973/