【问题标题】:read in a tabular file with importing anything通过导入任何内容读取表格文件
【发布时间】:2017-01-25 21:09:50
【问题描述】:

我有一个包含以下数据的表格文件(k.tsv)

Name School Year      Course
Nicole UVA  Freshmen   Biology
Jenna GWU   Sophomore  Organic
Brandon VT  Senior     Finance

我想在不导入 csv 或使用 csvreader 并将其存储到字典中的情况下读取此文件。我该怎么做?

my_dict = {}
with open("k.tsv", 'r') as f:
    for line in f:
        items=line.split()
        key, values = items[0], items[1:]
        my_dict[key] = values
print my_dict

我试过了,但它没有正确输出数据。

【问题讨论】:

  • open()read()close()。顺便说一句:如果文件中的数据不正确,那么您可能会得到不正确的结果。更好地展示您获得的结果以及您期望的结果。
  • 您的代码在我的电脑上运行良好。前提是您文件中的每一行都没有换行符。我按预期收到了{'Nicole': ['UVA', 'Freshmen', 'Biology'], 'Jenna': ['GWU', 'Sophomore', 'Organic'], 'Name': ['School', 'Year', 'Course'], 'Brandon': ['VT', 'Senior', 'Finance']}
  • @Jean-FrançoisFabre - 你说得对,readlines() 更糟 :)
  • 您的代码可以正常工作......并且“没有正确输出数据”?请告诉我们您得到什么以及您期望什么。 2 个人已经因此浪费了时间发布错误的答案(另外 2 个人浪费时间对所有移动的内容投反对票:))
  • @furas with 运算符将负责关闭文件,f 是一个文件迭代器。示例中使用的操作没有任何问题。听起来输入数据一定是坏的。

标签: python dictionary


【解决方案1】:

.split() 默认情况下按空格分割,我相信。所以你想要.split(','),如果它真的是一个csv。

这会给你{'Nicole': ['UVA', 'Freshmen', 'Biology'], 'Brandon': ['VT', 'Senior', 'Finance'], 'Jenna': ['GWU', 'Sophomore', 'Organic'], 'Name': ['School', 'Year', 'Course']} 不过不确定这是否真的是你想要的。

【讨论】:

  • 检查输入文件。它不是 csv。
  • 啊,我被误导了。看起来提供的代码很好。
  • 只是为了记录,它的逗号或制表符是否分隔无关紧要。如果没有指定分隔符,Python 将根据特定类型空白的连续运行来确定它认为分隔符是什么。 See the docs for str.split().
  • "如果 sep 未指定或为 None,则应用不同的拆分算法:连续空白的运行被视为单个分隔符"。这适用于逗号。只有制表符、空格和其他奇怪的“空白”分隔符 (\xa0...)
猜你喜欢
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-29
相关资源
最近更新 更多