这里的第一个问题请原谅礼仪中的任何失误。
我是python的新手。我有一个小项目,我试图通过实际原因和学习经验来完成这两个项目,也许这里的一些人可以帮助我。我经常从中检索数据的专有系统。不幸的是,他们没有使用标准的CSV格式。他们使用一个奇怪的字符来分隔数据,它是一个‡。我需要它以CSV格式,以便将其导入另一个系统。所以我需要做的是获取数据并替换特殊字符(使用逗号)并通过删除空白以及其他次要内容(如无法识别的字符等)来格式化数据......所以它是我需要它的方式CSV导入它。
我想学习一些python,所以我想我会用python写它。我将从网络服务URL读取它,但是现在我只有一些我收到的相同格式的测试数据。
实际上每个请求会有大量的数据,但是当我理解如何正确检索和操作数据时,我可以扩展它。
到目前为止,我的代码只是尝试从数据中读取和写入两列:
import requests
import csv
r = requests.get ('https://www.dropbox.com/s/7uhheam5lqppzis/singlelineTest.csv?dl=0')
data = r.text
with open("testData.csv", "wb") as csvfile:
f = csv.writer(csvfile)
f.writerow(["PlayerID", "Partner"]) # add headers
for elem in data:
f.writerow([elem["PlayerID"], elem["Partner"]])
我收到此错误。 文件" csvTest.py",第14行,in f.writerow([elem [" PlayerID"],elem [" Partner"]]) TypeError:字符串索引必须是整数
可能很明显,我不知道如何操纵数据,也不知道如何正确阅读。我能够撤回一些JSON数据并将其输出,因此我知道结构在核心处使用标准化数据。
提前感谢任何提示。
我会继续戳它。
示例数据位于脚本中提到的保管箱链接中。
https://www.dropbox.com/s/7uhheam5lqppzis/singlelineTest.csv?dl=0
答案 0 :(得分:1)
有很多问题。首先,链接不正确,因为它返回html。要获取原始文件,请使用:
r = requests.get ('https://www.dropbox.com/s/7uhheam5lqppzis/singlelineTest.csv?dl=1')
然后,data是一个字符串,因此elem in data
将迭代字符串的所有字符,这不是你想要的。
然后,您的数据是unicode,而不是字符串。所以你需要先解码它们。
这是你的程序,有一些变化:
导入请求 import csv
r = requests.get ('https://www.dropbox.com/s/7uhheam5lqppzis/singlelineTest.csv?dl=1')
data = str(r.text.encode('utf-8').replace("\xc2\x87", ",")).splitlines()
headers = data.pop(0).split(",")
pidx = headers.index('PlayerID')
partidx = headers.index('Partner')
with open("testData.csv", "wb") as csvfile:
f = csv.writer(csvfile)
f.writerow(["PlayerID", "Partner"]) # add headers
for data in data[1:]:
words = data.split(',')
f.writerow([words[pidx], words[partidx]])
输出:
PlayerID,Partner
1038005,EXT
254034,EXT
答案 1 :(得分:0)
使用split
:
lines = data.split('\n') # split your data to lines
headers = lines[0].split('‡')
player_index = headers.index('PlayerID')
partner_index = headers.index('Partner')
for line in lines[1:]: # skip the headers line
words = line.split('‡') # split each line by the delimiter '‡'
print words[player_index], words[partner_index]
为此,请将python
源代码的编码定义为UTF-8
,方法是将此行添加到文件顶部:
# -*- coding: utf-8 -*-
在PEP 0263
了解详情。