0
前の投稿と同様に、APIトークンをポストしています。私は、ウェブサイトからデータをスクレイピングしています:出力でUnicodeDecodeError: 'ascii'コーデックは、位置19のバイト0xc3をデコードできません:範囲内の序数(128)
reload(sys)
sys.setdefaultencoding('utf-8-sig')
def __unicode__(self):
return unicode(self.some_field) or u''
def daterange(start_date, end_date):
for n in range(int ((end_date - start_date).days)):
yield start_date + timedelta(n+1)
#def is_ascii(s):
#return all(ord(c) < 128 for c in s)
date=''
min_date=''
max_date=''
if sys.argv[1] == 'today':
min_date = datetime.today() - timedelta(1)
max_date = datetime.today()
elif sys.argv[1] == 'yesterday':
min_date = datetime.today() - timedelta(2)
max_date = datetime.today() - timedelta(1)
else:
min_date = datetime.strptime(sys.argv[1], "%Y-%m-%d") - timedelta(1)
max_date = datetime.strptime(sys.argv[2], "%Y-%m-%d")
siteIDs = [37]
for id in siteIDs:
for date in daterange(min_date, max_date):
response_data = {}
url = 'http://survey.modul.ac.at/piwikAnalytics/?module=API&method=Live.getLastVisitsDetails&idSite=' + str(id) + '&format=csv&token_auth=' + token_auth + '&period=day&date=' + date.strftime('%Y-%m-%d') + '&filter_limit=2000'
try:
response=requests.get(url,timeout=100)
response_url=response.url
response_data=urllib.urlopen(url)
except (requests.exceptions.Timeout,requests.exceptions.RequestException,requests.exceptions.HTTPError,requests.exceptions.ConnectionError,socket.error) as e :
response_data="error"
with codecs.open('raw_csv/piwik_'+ str(id) + '_' + date.strftime('%Y-%m-%d')+ '.csv', 'wb',encoding='utf-8-sig') as fp:
fp.write(response.text)
列「idSiteは」「idSite」として示されている。ここでは、コードです。私は次のコードでそれを削除しようとした:
import pandas as pd
df = pd.read_csv("piwik_37_2016-07-08.csv", dtype = "unicode", encoding="utf-8-sig")
df.to_csv("abc.csv")
しかし、私は、文字列からすべての非ASCII文字を削除するには、上記のUnicodeのエラーに
可能な重複http://stackoverflow.com/questions/12556839/is-there-an-easy- way-to-make-unico –
読み取り操作を実行すると、ユニコード値が取得されます。これらのUnicode文字は、csvファイルに書き込む前にバイトに変換する必要があります。したがって、あなたはこれをしなければなりません: 'df.to_csv(" abc.csv "、encoding = 'utf-8')' –