Skip to main content
 首页 » 编程设计

python之从文本文件到字典

2025年05月04日26mayingbao

我是一个 txt 文件并获取字符串并将第一个作为我正在创建的字典的键,其余的将是我作为元组的值。手头有标题,我已经让我的代码在开始时“忽略”它。

txt 值示例:

"Ronald Reagan","1981","8","69","California","Republican" 
"George Bush","1989","4","64","Texas","Republican" 
"Bill Clinton","1993","8","46","Arkansas","Democrat" 

我想创建提供以下输出的字典:

{"Ronald Reagan": (1981,8,69,"California", "Republican") etc.} 

这是我目前拥有的代码:

def read_file(filename): 
    d={} 
    f= open(filename,"r") 
    first_line = f.readline() 
    for line in f: 
        #line=line.strip('"') 
        #line=line.rstrip() 
        data=line.split('"') 
        data=line.replace('"', "") 
 
        print(data) 
 
 
        key_data=data[0] 
 
        values_data= data[1:] 
        valuesindata=tuple(values_data) 
        d[key_data]=valuesindata 
 
    print(d) 
 
read_file(filename) 

第一个打印语句(我把它放在那里只是为了看看此时的输出是什么,它给了我以下内容:

Ronald Reagan,1981,8,69,California,Republican 
George Bush,1989,4,64,Texas,Republican 

等当它到达第二个打印语句时,它执行以下操作:

{'R': ('o', 'n', 'a', 'l', 'd', ' ', 'R', 'e', 'a', 'g', 'a', 'n', ',', '1', '9', '8', '1', ',', '8', ',', '6', '9', ',', 'C', 'a', 'l', 'i', 'f', 'o', 'r', 'n', 'i', 'a', ',', 'R', 'e', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 'n', '\n'), 'G': ('e', 'o', 'r', 'g', 'e', ' ', 'B', 'u', 's', 'h', ',', '1', '9', '8', '9', ',', '4', ',', '6', '4', ',', 'T', 'e', 'x', 'a', 's', ',', 'R', 'e', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 'n', '\n')} 

此外,我在引号处拆分它,因为我的一些字符串包含逗号作为名称的一部分,例如:“Carl, Jr。”

我不想导入 csv 模块,那么有办法吗?

请您参考如下方法:

您可以像 alecxe 建议的那样使用 csv 模块,也可以像这样“手动”执行:

csv_dict = {} 
 
with open(csv_file, 'r') as f: 
    for line in f: 
        line = line.strip().replace('"', '').split(',') 
        csv_dict[line[0]] = tuple(int(x) if x.isdigit() else str(x) for x in line[1:]) 

这将删除双引号,将数值转换为 int 并创建一个元组字典。