<span class=
"line"><span class=
"comment">#!/usr/bin/python</span></span> <span class="line"><span class="comment"># coding: UTF-8</span></span>
<span class="line"><span class="string">"""</span>
<span class="line">Created on 2015/9/30 14:55</span>
<span class="line">@author: 'WX'</span>
<span class="line">"""</span></span>
<span class="line"><span class="keyword">from</span> collections <span class="keyword">import</span> namedtuple</span>
<span class="line"><span class="keyword">import</span> csv</span>
<span class="line"><span class="keyword">if</span> __name__ == <span class="string">"__main__"</span>:</span>
<span class="line"> fileName = <span class="string">'stocks.csv'</span></span>
<span class="line"> writeFileName = <span class="string">'dest.csv'</span></span>
<span class="line"> <span class="keyword">with</span> open(fileName) <span class="keyword">as</span> f:</span>
<span class="line"> reader = csv.reader(f)</span>
<span class="line"> headers = next(reader)</span>
<span class="line"> print(<span class="string">"使用下标进行访问"</span>)</span>
<span class="line"> <span class="keyword">for</span> row <span class="keyword">in</span> reader:</span>
<span class="line"> <span class="comment"># 可以使用下标进行访问,row是一个元组</span></span>
<span class="line"> length = len(row)</span>
<span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> range(length):</span>
<span class="line"> print(row[i], end=<span class="string">'\t'</span>)</span>
<span class="line"> print()</span>
<span class="line"> print(<span class="string">'------------------------------------------------'</span>)</span>
<span class="line"> <span class="keyword">with</span> open(fileName) <span class="keyword">as</span> f:</span>
<span class="line"> <span class="comment"># 使用命名元组访问</span></span>
<span class="line"> reader = csv.reader(f)</span>
<span class="line"> headers = next(reader)</span>
<span class="line"> Row = namedtuple(<span class="string">'Row'</span>, headers)</span>
<span class="line"> print(<span class="string">"使用命名元组进行访问"</span>)</span>
<span class="line"> <span class="keyword">for</span> r <span class="keyword">in</span> reader:</span>
<span class="line"> row = Row(*r)</span>
<span class="line"> <span class="comment"># 这时候就可以使用首行的列名来进行访问了</span></span>
<span class="line"> line = <span class="string">'%s\t%s\t%s\t%s\t%s\t%s'</span> % (row.Symbol, row.Price, row.Date, row.Time, row.Change, row.Volume)</span>
<span class="line"> print(line)</span>
<span class="line"> print(<span class="string">'------------------------------------------------'</span>)</span>
<span class="line"> <span class="keyword">with</span> open(fileName) <span class="keyword">as</span> f:</span>
<span class="line"> <span class="comment"># 将内容读取到字典序列中,然后用key去读取</span></span>
<span class="line"> dict_reader = csv.DictReader(f)</span>
<span class="line"> print(<span class="string">"使用字典序列进行访问"</span>)</span>
<span class="line"> <span class="keyword">for</span> row <span class="keyword">in</span> dict_reader:</span>
<span class="line"> line = <span class="string">'%s\t%s\t%s\t%s\t%s\t%s'</span> % (</span>
<span class="line"> row[<span class="string">'Symbol'</span>], row[<span class="string">'Price'</span>], row[<span class="string">'Date'</span>], row[<span class="string">'Time'</span>], row[<span class="string">'Change'</span>], row[<span class="string">'Volume'</span>])</span>
<span class="line"> print(line)</span>
<span class="line"> print(<span class="string">'------------------------------------------------'</span>)</span>
<span class="line"> print(<span class="string">"使用元组方式写入,SUCCESS!"</span>)</span>
<span class="line"> <span class="keyword">with</span> open(writeFileName, mode=<span class="string">'w'</span>, newline=<span class="string">''</span>) <span class="keyword">as</span> wf:</span>
<span class="line"> headers = [<span class="string">'Symbol'</span>, <span class="string">'Price'</span>, <span class="string">'Date'</span>, <span class="string">'Time'</span>, <span class="string">'Change'</span>, <span class="string">'Volume'</span>]</span>
<span class="line"> rows = [(<span class="string">'AA'</span>, <span class="number">39.48</span>, <span class="string">'6/11/2007'</span>, <span class="string">'9:36am'</span>, -<span class="number">0.18</span>, <span class="number">181800</span>),</span>
<span class="line"> (<span class="string">'AIG'</span>, <span class="number">71.38</span>, <span class="string">'6/11/2007'</span>, <span class="string">'9:36am'</span>, -<span class="number">0.15</span>, <span class="number">195500</span>),</span>
<span class="line"> (<span class="string">'AXP'</span>, <span class="number">62.58</span>, <span class="string">'6/11/2007'</span>, <span class="string">'9:36am'</span>, -<span class="number">0.46</span>, <span class="number">935000</span>),</span>
<span class="line"> ]</span>
<span class="line"> writer = csv.writer(wf)</span>
<span class="line"> writer.writerow(headers)</span>
<span class="line"> writer.writerows(rows)</span>
<span class="line"> print(<span class="string">"使用字典方式写入,SUCCESS!"</span>)</span>
<span class="line"> <span class="comment"># 在Windows平台需要指定newline='',否则在两行内容之间会多出一行空行</span></span>
<span class="line"> <span class="keyword">with</span> open(writeFileName, mode=<span class="string">'w'</span>, newline=<span class="string">''</span>) <span class="keyword">as</span> wf:</span>
<span class="line"> headers = [<span class="string">'Symbol'</span>, <span class="string">'Price'</span>, <span class="string">'Date'</span>, <span class="string">'Time'</span>, <span class="string">'Change'</span>, <span class="string">'Volume'</span>]</span>
<span class="line"> rows = [{<span class="string">'Symbol'</span>: <span class="string">'AA'</span>, <span class="string">'Price'</span>: <span class="number">39.48</span>, <span class="string">'Date'</span>: <span class="string">'6/11/2007'</span>,</span>
<span class="line"> <span class="string">'Time'</span>: <span class="string">'9:36am'</span>, <span class="string">'Change'</span>: -<span class="number">0.18</span>, <span class="string">'Volume'</span>: <span class="number">181800</span>},</span>
<span class="line"> {<span class="string">'Symbol'</span>: <span class="string">'AIG'</span>, <span class="string">'Price'</span>: <span class="number">71.38</span>, <span class="string">'Date'</span>: <span class="string">'6/11/2007'</span>,</span>
<span class="line"> <span class="string">'Time'</span>: <span class="string">'9:36am'</span>, <span class="string">'Change'</span>: -<span class="number">0.15</span>, <span class="string">'Volume'</span>: <span class="number">195500</span>},</span>
<span class="line"> {<span class="string">'Symbol'</span>: <span class="string">'AXP'</span>, <span class="string">'Price'</span>: <span class="number">62.58</span>, <span class="string">'Date'</span>: <span class="string">'6/11/2007'</span>,</span>
<span class="line"> <span class="string">'Time'</span>: <span class="string">'9:36am'</span>, <span class="string">'Change'</span>: -<span class="number">0.46</span>, <span class="string">'Volume'</span>: <span class="number">935000</span>}, ]</span>
<span class="line"> writer = csv.DictWriter(wf, headers)</span>
<span class="line"> writer.writeheader()</span>
<span class="line"> writer.writerows(rows)</span>
<span class="line"> <span class="comment"># 更换一种分隔符写入文件</span></span>
<span class="line"> <span class="keyword">with</span> open(writeFileName, mode=<span class="string">'w'</span>, newline=<span class="string">''</span>) <span class="keyword">as</span> wf:</span>
<span class="line"> headers = [<span class="string">'Symbol'</span>, <span class="string">'Price'</span>, <span class="string">'Date'</span>, <span class="string">'Time'</span>, <span class="string">'Change'</span>, <span class="string">'Volume'</span>]</span>
<span class="line"> rows = [(<span class="string">'AA'</span>, <span class="number">39.48</span>, <span class="string">'6/11/2007'</span>, <span class="string">'9:36am'</span>, -<span class="number">0.18</span>, <span class="number">181800</span>),</span>
<span class="line"> (<span class="string">'AIG'</span>, <span class="number">71.38</span>, <span class="string">'6/11/2007'</span>, <span class="string">'9:36am'</span>, -<span class="number">0.15</span>, <span class="number">195500</span>),</span>
<span class="line"> (<span class="string">'AXP'</span>, <span class="number">62.58</span>, <span class="string">'6/11/2007'</span>, <span class="string">'9:36am'</span>, -<span class="number">0.46</span>, <span class="number">935000</span>),</span>
<span class="line"> ]</span>
<span class="line"> writer = csv.writer(wf, delimiter=<span class="string">';'</span>)</span>
<span class="line"> writer.writerow(headers)</span>
<span class="line"> writer.writerows(rows)</span>
<span class="line"> print(<span class="string">"使用分好作为分隔符写入,SUCCESS!"</span>)</span>