加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在python中将inputfile读为csv

发布时间:2020-12-20 12:31:39 所属栏目:Python 来源:网络整理
导读:我想从STDIN读取一个csv文件并对其进行操作. 以下是用于读取csv文件并执行所需操作的代码.这很好用.但我想从STDIN获取输入. import csvwith open('hospital_data.csv','rb') as csvfile: myDict = {} csvreader = csv.reader(csvfile,delimiter=',') for row
我想从STDIN读取一个csv文件并对其进行操作.

以下是用于读取csv文件并执行所需操作的代码.这很好用.但我想从STDIN获取输入.

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文件?

解决方法

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

由于其灵活性,我不愿意自己归档.例如:

import csv
import fileinput

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

但这也有效:

import csv
import sys

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

如果你这样做,你将需要使用-u命令行参数运行以生成流二进制文件,如果这会对您的平台产生影响:
https://docs.python.org/2/using/cmdline.html#cmdoption-u

在任何一种情况下,您都需要使用control-D来标记输入的结尾.

请注意,检查密钥是否在dict中的正确方法是myDict中的row [6]而不是检查密钥.事实上,如果您只想在密钥不存在时使用默认值,请使用get:

for row in csvreader:
    myDict[row[6]] = myDict.get(row[6],0) + 1

或者查看collections.Counter,因为你在2.7:

myDict = collections.Counter(row[6] for row in csvreader)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读