[英]Reading a csv file (utf-8) and outputting and merging utf-8 strings
讀寫文件時,我在編碼utf-8時遇到一些問題。 我有一個包含丹麥語和瑞典語字母(ÅÄÖ等)的CSV文件。 我想讀取此文件並提取一個字段-並處理數據(以創建url)。
我正在努力的是以下幾點:
\\xd6
輸出\\xd6
而不是ö
。 我嘗試了以下方法:
# -*- coding: utf-8 -*-
Companies = codecs.open("Axel_List.csv", "r", "utf-8")
(使用編解碼器lib讀取文件),會產生此錯誤'utf' codec can't byte 0xe4 in position 0
url=u'http://www.proff.se/bransch-sök?q='
和url='http://www.proff.se/bransch-sök?q='
后跟url.decode('utf-8')
在嘗試連接兩個字符串時會產生相同的錯誤: UnicodeEncodeError 'ascii codec can't encode character u'\\xf6 in position 29
我可以分別打印公司(即使它們不包含正確的字母)和url,因此加入它們時發生了某些情況。
# -*- coding: utf-8 -*-
import re
import codecs
import os, sys
Google_urls=open('google_Urls','w')
Proff_urls=open('Proff_Urls','w')
Companies=("Company_List.csv")
for line in Companies:
fields = line.split(",")
if fields[10]=="Sweden":
Company=(fields[1]).split("/v")
Company=str(Company).replace('[',"")
... stripping and manipulating the records
...
Company=Company.decode('utf-8')
url='http://www.proff.se/bransch-sök?q='
url=url.decode('utf-8')
Proff_se= ''.join((url,Company,"\n"))
Proff_urls.write(Company)
else:
continue
為什么我在閱讀文件時一直認為發生了一些奇怪的事情,是因為我已經對此進行了測試,所以效果很好。
# coding=utf-8
Svenska="äöå"
Dan_Nor="æøå"
Svenska=Svenska.decode('utf-8')
Dan_Nor=Dan_Nor.decode('utf-8')
string3 ="".join((Svenska,Dan_Norlow,Dan_NorCapital))
print string3
在此先感謝您,我已經閱讀了很多與此有關的問題,但我無法真正解決。
問題幾乎可以肯定是您的文件實際上不是UTF-8,因此嘗試像讀取文件是UTF-8一樣失敗。 特別是,您聲稱使用codecs.open("Axel_List.csv", "r", "utf-8")
然后讀取文件會出現以下錯誤:
'utf' codec can't byte 0xe4 in position 0
因此,很明顯,它不是真正的UTF-8,或者它已損壞。
通常,很難在沒有實際文件的情況下猜測文件的編碼。 但是在這種情況下,這很容易。
字節0xe4在Latin-1(ISO-8859-1)中為ä
。 ä
是代碼要查找的第一個字符。 因此,您的文件可能是Latin-1。
同樣的字節也ä
有時在斯堪的納維亞半島,拉丁-4和拉丁語-6(ISO-8859-4和-10),這樣你的文件可能是其中之一使用了兩個其他傳統編碼。
在UTF-8中,0xe4是CJK字符的前導字節。 除非您懷疑自己確實有損壞的日語文本文件而不是有效的瑞典語文件,否則您的文件肯定不是UTF-8。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.