簡體   English   中英

如何使用python讀取csv文件

[英]How to read a csv file with python

我正在嘗試讀取csv文件,但它不起作用。 我可以讀取我的csv文件但是當我看到我讀到的內容時,值之間會出現空格。

這是我的代碼

# -*- coding: iso-8859-1 -*-
import sql_db, tmpl_macros, os
import security, form, common

import csv

class windows_dialect(csv.Dialect):
    """Describe the usual properties of unix-generated CSV files."""
    delimiter = ','
    quotechar = '"'
    doublequote = 1
    skipinitialspace = 0
    lineterminator = 'n'
    quoting = csv.QUOTE_MINIMAL


def reco(d):
 cars = {210:'"', 211:'"', 213:"'", 136:'à', 143:'è', 142:'é'}
 for c in cars:
  d = d.replace(chr(c),cars[c])
 return d

def page_process(ctx):
 if ctx.req_equals('catalog_send'):
  if 'catalog_file' in ctx.locals.__dict__:
   contenu = ctx.locals.catalog_file[0].file.read()
   #contenu.encode('')
   p = csv.reader(contenu, delimiter=',')
   inserted = 0
   modified = 0
   (cr,db) = sql_db.cursor_get()
   for line in p:
    if line:
     logfile = open('/tmp/test.log', 'a')
     logfile.write(line[0])
     logfile.write('\n')
     logfile.write('-----------------------------\n')
     logfile.close()

我更喜歡使用numpy的genfromtxt而不是標准的csv庫,因為它生成numpy的重新排列,它是用於將數據存儲在類似於表的對象中的干凈數據結構。

>>> from numpy import genfromtxt
>>> data = genfromtxt(csvfile, delimiter=',', dtype=None)
# data is a table-like structure (a numpy recarray) in which you can access columns and rows easily
>>> data['firstcolumn']
<content of the first column>

編輯:這個答案很老了。 雖然numpy.genfromtxt,但現在大多數人會使用熊貓:

>>> import pandas as pd
>>> pd.read_csv(csvfile)

這樣做的好處是可以創建pandas.DataFrame,這是一種更好的數據分析結構。

如果您可以控制數據,請使用制表符分隔的::

import csv
import string

writer = open('junk.txt', 'wb')
for x in range(10):
    writer.write('\t'.join(string.letters[:5]))
    writer.write('\r\n')
writer.close()
reader = csv.reader(open('junk.txt', 'r'), dialect='excel-tab')
for line in reader:
    print line

這產生了預期的結果。

獲得更多有用反饋的提示:通過不包含無關且不重要的工件的自包含且完整的示例代碼來演示您的問題。

你沒有對你定義的方言做任何事情。 你的意思是這樣做的:

csv.register_dialect('windows_dialect', windows_dialect)
p = csv.reader(contenu, dialect='windows_dialect')

還不能確定什么reco功能是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM