python - 'open' 和 'csv.DictReader' 无法正确读取文件
问题描述
我有一个在 windows-1250 中编码的简单 .csv 文件。具有键值对的两列,用分号分隔。我想根据这些数据创建一个字典。我使用了这个解决方案:How to read a .csv file into a dictionary in Python。下面的代码:
import os
import csv
strpath = r"C:\Project Folder"
filename = "to_dictionary.csv"
os.chdir(strpath)
test_csv = open(filename, mode="r", encoding="windows-1250")
dctreader = csv.DictReader(test_csv)
ordereddct = list(dctreader)[0]
finaldct = dict(ordereddct)
print(finaldct)
首先,这个文件有 370 行,但我只收到两个. 其次,Python 将整个第一行作为键读取,将下一行作为值读取(然后像我提到的那样停止)。
# source data
# a;A
# b;B
# c;C
# ... up to 370 rows
# what I need (example; there should be 368 pairs more of course)
finaldct = {"a": "A", "b": "B"}
# what I receive
finaldct = {"a;A": "b;B"}
我不知道为什么会发生这种情况,也找不到任何可行的解决方案。
注意:我想避免使用 pandas,因为在这种情况下它似乎工作得更慢。
解决方案
推荐阅读
- php - 未定义的索引:带有 $GLOBAL 变量的类型
- c# - 从 SQL 查询返回属性到类列表的问题
- audio - 为循环 wav 样本添加抗锯齿/带宽限制(非傅立叶变换)
- python-3.x - Python/Django 使用某种缓存在一段时间内记录错误
- java - 尝试使用 appletviewer jGRASP 时出现路径错误
- node.js - 向客户端公开 node.js 变量
- javascript - 当流挂起时,远程流切割上的 WebRTC MediaRecorder
- mysql - 有没有办法通过将重复值替换为空来选择行
- javascript - JavaScript/jQuery:Divs 不会在循环中改变背景颜色
- groovy - 用 apache nifi 做 json 键转换