回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我在CSV文件中有一些俄文数据:</p>
<pre><code>2-комнатная квартира РДТ', мкр Тастак-3, Аносова — Толе би;Алматы
2-комнатная квартира БГР', мкр Таугуль, Дулати (Навои) — Токтабаева;Алматы
2-комнатная квартира ЦФМ', мкр Тастак-2, Тлендиева — Райымбека;Алматы
</code></pre>
<p>分隔符是<code>;</code>符号。</p>
<hr/>
<p>我想读取数据并将其放入数组中。我试图使用以下代码读取此数据:</p>
<pre><code>def loadCsv(filename):
lines = csv.reader(open(filename, "rb"),delimiter=";" )
<a href="https://www.cnpython.com/pypi/dataset" class="inner-link">dataset</a> = list(lines)
for i in range(len(dataset)):
dataset[i] = [str(x) for x in dataset[i]]
return dataset
</code></pre>
<p>然后我阅读并打印结果:</p>
<pre><code>mydata = loadCsv('krish(csv3).csv')
print mydata
</code></pre>
<p>输出:</p>
<pre><code>[['2-\xea\xee\xec\xed\xe0\xf2\xed\xe0\xff \xea\xe2\xe0\xf0\xf2\xe8\xf0\xe0, \xec\xea\xf0 \xd2\xe0\xf1\xf2\xe0\xea-3, \xc0\xed\xee\xf1\xee\xe2\xe0 \x97 \xd2\xee\xeb\xe5 \xe1\xe8', '\xc0\xeb\xec\xe0\xf2\xfb'], ['2-\xea\xee\xec\xed\xe0\xf2\xed\xe0\xff \xea\xe2\xe0\xf0\xf2\xe8\xf0\xe0, \xec\xea\xf0 \xd2\xe0\xf3\xe3\xf3\xeb\xfc, \xc4\xf3\xeb\xe0\xf2\xe8 (\xcd\xe0\xe2\xee\xe8) \x97 \xd2\xee\xea\xf2\xe0\xe1\xe0\xe5\xe2\xe0', '\xc0\xeb\xec\xe0\xf2\xfb'], ['2-\xea\xee\xec\xed\xe0\xf2\xed\xe0\xff \xea\xe2\xe0\xf0\xf2\xe8\xf0\xe0, \xec\xea\xf0 \xd2\xe0\xf1\xf2\xe0\xea-2, \xd2\xeb\xe5\xed\xe4\xe8\xe5\xe2\xe0 \x97 \xd0\xe0\xe9\xfb\xec\xe1\xe5\xea\xe0', '\xc0\xeb\xec\xe0\xf2\xfb']]
</code></pre>
<hr/>
<p>我发现在这种情况下需要编解码器,并尝试对该代码执行相同的操作:</p>
<pre><code>import codecs
with codecs.open('krish(csv3).csv','r',encoding='utf8') as f:
text = f.read()
print text
</code></pre>
<p>我得到这个错误:</p>
<pre><code>newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xea in position 2: invalid continuation byte
</code></pre>
<p>怎么了?使用编解码器时如何在我的数据中指定分隔符?
我只想从文件中读取数据并将其放入二维数组中。</p>