如何告诉 map()
有选择地将列表中的部分字符串(而不是所有字符串)转换为整数值?
输入文件(制表符分隔):
abc1 34 56
abc1 78 90
我的尝试:
import csv
with open('file.txt') as f:
start = csv.reader(f, delimiter='\t')
for row in start:
X = map(int, row)
print X
错误信息:ValueError: invalid literal for int() with base 10: 'abc1'
当我用 csv
模块读入文件时,它是一个字符串列表:
['abc1', '34', '56']
['abc1', '78', '90']
map()
显然不喜欢 'abc1'
,尽管它是一个字符串,就像 '34'
是一个字符串一样。
我彻底检查了Convert string to integer using map()但它没有帮助我处理输入文件的第一列。
def safeint(val):
try:
return int(val)
except ValueError:
return val
for row in start:
X = map(safeint, row)
print X
是一种方法……你可以更进一步
from functools import partial
myMapper = partial(map,safeint)
map(myMapper,start)
我是一名优秀的程序员,十分优秀!