Skip to main content
 首页 » 编程设计

python之如何为 Python 中的字符串列表自定义 map()

2025年05月04日27haluo1

如何告诉 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)