【问题标题】:Python csv skipping fields with quotedPython csv跳过带引号的字段
【发布时间】:2015-07-06 05:51:50
【问题描述】:

尝试使用 mapreduce 和 python 在 AWS 上使用大数据进行练习。

我有密码

    import sys
    import re
    import csv
    import glob
    import string

    #class MyDialect(csv.Dialect):
        #strict = True
        #skipinitialspace = False
        #quoting = QUOTE_MINIMAL
        #delimiter = ','
        #quotechar = '"'

    for line in sys.stdin:
        csv.reader(line, dialect='excel')
        #reader = csv.reader(line, delimiter=',', quoting=csv.QUOTE_ALL,  quotechar='"')
        #line = line.strip()
        #unpacked = line.split(",")
        try:
        #regular expresion 
          num,title,year,length,budget,rating,votes,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,mpaa,Action,Animation,Comedy,Drama,Documentary,Romance,Short = line.split(",")
          if float(rating) <= 1:
            results = [votes, rating, title, year]
            print("\t".join(results))
        except ValueError:
          pass

现在我知道这并不完美,它输出行值,但是每当我尝试使用行上的 csv 时,我都会得到 .

<_csv.reader>

我所有的台词。

我需要将输入作为一行,并将其输出到标准输出,因为这是一个处理数据并将其传递给减速器的节点。我已经解决了大部分错误,但是它不接受带有逗号的标题。所以“布莱尔女巫,”将被跳过并且不会显示在列表中,因为我相信预算变成了评级,评级变成了选票。

你知道怎么做吗?

【问题讨论】:

  • csv.reader(line, dialect='excel') 应该做什么?
  • 我试图从我的行中取回一个字符串,但不确定如何将它传递给阅读器的变量。
  • 你接受什么样的输入?
  • IMDB 数据,格式如上:"6098","Blair Witch Project, The",1999,86,35000,6.1,39814,14.5,4.5,4.5,4.5,4.5,14.5,14.5 ,14.5,14.5,14.5,"R",0,0,0,0,0,0,0

标签: python csv elastic-map-reduce


【解决方案1】:

csv.reader 将打开的文件作为其参数,并将返回一个读取器对象,该对象将遍历给定 csv 文件中的行。由于您没有处理 csv.reader 的返回值,因此它将打印您看到的行。因此,您需要使用一个变量来存储阅读器,然后如果要使用此模块,则迭代使用该阅读器对象,或者如果您想手动解析文件,则只需删除该行。详情见文档:https://docs.python.org/2/library/csv.html

【讨论】:

  • 我确实尝试过“readline = csv.reader(line)”并打印 readline,但我得到了一个对象,有没有办法将它们传递给变量?
  • csv.reader 应该处理一组 csv 行。您不能使用它来处理单行。它返回的对象可以迭代,每次迭代都会为您提供一个列表,其中包含原始 csv 文件的一行中的元素。这是一个如何在标准输入上使用它的示例:stackoverflow.com/questions/6556078/…
【解决方案2】:

Ok 找到了更简单的方法来完成这一切。如果您是管理员,您可以控制数据,而不是使用“,”作为分隔符,而是使用制表符,那么您在任何地方都不会遇到逗号问题。大多数数据库信息没有标签,除非有很多文本。

了解您的数据,围绕数据协同工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2012-11-17
    • 2016-05-31
    • 2014-07-15
    • 1970-01-01
    相关资源
    最近更新 更多