首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将inputfile读入python中的csv

将inputfile读入python中的csv
EN

Stack Overflow用户
提问于 2014-12-01 22:05:11
回答 2查看 4.7K关注 0票数 4

我想从STDIN读取csv文件并对其进行操作。

下面是读取csv文件并执行所需操作的代码。这个很好用。但我想从STDIN那里得到信息。

代码语言:javascript
复制
import csv
with open('hospital_data.csv', 'rb') as csvfile:
    myDict = {}

    csvreader = csv.reader(csvfile, delimiter=',')
    for row in csvreader:
        if row[6] not in myDict.keys():
            #print 'Zipcode: ' + row[6] + ' Hospital code: ' + row[1]
            myDict[row[6]] = 1
        elif row[6] in myDict.keys():
            #print 'value in row '+ str(myDict[row[6]])
            myDict[row[6]] += 1

Python中是否有一种方法可以将STDIN中的文件作为csv文件读取?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-01 22:30:08

csv.reader将获取任何产生行的内容,因此您可以使用这个答案中所示的任何方法从stdin:How do you read from stdin in Python?获取行。

由于fileinput的灵活性,我本人也喜欢它。例:

代码语言:javascript
复制
import csv
import fileinput

myDict = {}
csvreader = csv.reader(fileinput.input(mode='rb'), delimiter=',')

但这也适用于:

代码语言:javascript
复制
import csv
import sys

myDict = {}
csvreader = csv.reader(sys.stdin, delimiter=',')

如果这样做,您将希望使用-u命令行参数来生成流二进制,如果这在您的平台上产生了影响:https://docs.python.org/2/using/cmdline.html#cmdoption-u

在这两种情况下,您都需要使用control来标记输入的结尾。

注意,检查键是否在dict中的正确方法是if row[6] in myDict,而不是检查keys。事实上,如果您只希望在键不存在时使用默认值,请使用get

代码语言:javascript
复制
for row in csvreader:
    myDict[row[6]] = myDict.get(row[6], 0) + 1

或者看看collections.Counter,因为你用的是2.7:

代码语言:javascript
复制
myDict = collections.Counter(row[6] for row in csvreader)
票数 12
EN

Stack Overflow用户

发布于 2014-12-01 22:36:50

使用sys.stdin,它是一个类似文件的对象.

代码语言:javascript
复制
import sys
import csv

data = sys.stdin.readlines()
csvreader = csv.reader(data, delimiter=',')
for row in csvreader:
    print row
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27238221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档