无法将带有数字(字符串)的文件读入带有整数值的字典

2024-10-02 02:24:45 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个data.txt文件,它保存了关于汽车的信息:

CAR|PRICE|RPM

TOYOTA|21,000|3,600

HONDA|19,000|4,000

通过将这个数据文件传递到函数createCarDictionary,我能够创建一个字典,创建汽车品牌作为键,值作为txt文件中存储为列表的剩余信息:

dict1 = {}

def createCarDictionary(datafile):
    for line in datafile.splitlines():
        line = line.replace(',', '')
        key, value, value2 = map(str.strip, line.split('|'))
        dict1[key] = [value, value2]
    return dict1

datafile = open('data.txt', 'r').read()

createCarDictionary(datafile)
print(dict1)

输出

{'HONDA': ['19000', '4000'], 'TOYOTA': ['21000', '3600'], 'CAR': ['PRICE', 'RPM']}

我试图使用上面函数中的for循环将txt文件中的数字转换为整数值,但是我得到了一个错误,因为头CAR|PRICE|RPMfor循环在第一次崩溃我的程序时迭代的,因为头不能在任何地方转换为整数

如何使用上面的函数将RPM和PRICE转换为dict1中的整数,同时避免从最终结果中删除标题


Tags: 文件函数txt信息fordataline整数
3条回答

在使用with语句打开文件之后,可以使用next跳过第一行

例如:

dict1 = {}

def createCarDictionary(datafile):
    with open(datafile) as infile:
        next(infile)  #Skip First Line
        for line in infile:
            line = line.replace(',', '')
            key, value, value2 = map(str.strip, line.split('|'))
            dict1[key] = [value, value2]
        return dict1

createCarDictionary('data.txt')
print(dict1)

您可以使用isdigit方法检查字符串是否仅由数字组成

dict1 = {}
def check_string_and_get_number(value):
    if value.isdigit():
       return int(value)
    else:
       return value
def createCarDictionary(datafile):
    for line in datafile.splitlines():
        line = line.replace(',', '')
        key, value, value2 = map(str.strip, line.split('|'))
        value = check_string_and_get_number(value)
        value2 = check_string_and_get_number(value2)
        dict1[key] = [value, value2]
    return dict1

datafile = open('data.txt', 'r').read()

createCarDictionary(datafile)
print(dict1)

您可以使用以下代码:

dict1 = {}

def createCarDictionary(datafile):
    for line in datafile.splitlines():
        line = line.replace(',', '')
        key, value, value2 = map(str.strip, line.split('|'))
        dict1[key] = [int(value), int(value2)]
    return dict1

datafile = open('data.txt', 'r').read()

createCarDictionary(datafile)
print(dict1)

相关问题 更多 >

    热门问题