在Python中读取CSV文件会生成单个字符列表

时间:2017-02-07 21:25:48

标签: python csv logging

我试图用Python解析CSV文件,到目前为止,它返回了一个单独的字符列表,但显然我不能将字符列表连接成一个字符串。当我尝试这样做时,我的记录器根本不记录任何内容。这是代码:

def action_import(self):
    f = self.import_file.decode('base64')
    reader = csv.reader(f)
    new_reader = []
    for row in reader:
        new_reader += row
    _logger.debug("NEW READER")
    _logger.debug(new_reader) #returns a list of individual characters
    string = "I'm a string"
    for char in new_reader:
        _logger.debug("HERE IS A CHAR")
        _logger.debug(char) #returns an individual char with no quotation marks
        string += str(char)
    _logger.debug("THE STRING")
    _logger.debug(string) #returns nothing

_logger.debug(new_reader)的输出与单个字符列表如下所示: ['\xef', '\xbb', '\xbf', 'P', 'r', 'o', 'd', 'u', 'c', 't', '', '', 'Q', 't', 'y', '', '', 'P', 'r', 'i', 'c', 'e', '', '', 'P', 'r', 'i', 'c', 'e', ' ', 'P', 'e', 'r', ' ', 'U', 'n', 'i', 't', '', '', 'P', 'u', 'b', 'l', 'i', 'c', ' ', 'P', 'r', 'i', 'c', 'e', 'A', 'T', 'O', 'R', 'V', 'A', 'S', 'T', 'A', 'T', 'I', 'N', ' ', '2', '0', ' ', 'M', 'G', ' ', 'T', 'A', 'B', 'L', 'E', 'T', '', '', '3', '0', '', '', '1', '0', '', '', '0', '.', '3', '3', '3', '3', '3', '3', '3', '3', '3', '', '', '0', '.', '3', '3', '3', '3', '3', '3', '3', '3', '3']

我也尝试过''.join(new_reader),但同样的事情发生在记录器甚至没有记录结果的地方。

我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

  • str.decode()它在您的案例中将self.import_file视为字符串。

  • csv.reader()csvfile作为参数,csvfile是一个支持迭代器协议的对象,每次调用next()方法时都会返回一个字符串。

您意外地将字符串作为csvfile传递给csv.reader(),例如:

   >>> f = csv.reader("abc")
    >>> for row in f:
    ...     print row
    ...
    ['a']
    ['b']
    ['c']