我一直在研究一个普通的Python代码来将数据从csv中分离出来。我的目标是使用多种策略重新创建这段代码,以便更好地理解Python。稍后将对该代码进行改进。我的代码是有效的,但有一些事情我不明白。这里是:
with open('C:\My Super Secret Path\primary_debates_cleaned.csv') as primaryData:
headers = primaryData.readline().strip('\n').split(',')
flag = 0
for lines in primaryData:
sepInit = lines.strip('\n').split('"')
if flag == 1:
sep1 = [item for item in sepInit[0].split(',') if item is not '']
sep2 = sepInit[1]
sep3 = [item for item in sepInit[2].split(',') if item is not '']
#sep4 = sepInit[3]
sep4 = sepInit[-2]
#sep5 = sepInit[4].strip(',')
sep5 = sepInit[-1].strip(',')
#sepFinal = [sep1[0], sep1[1], sep2, sep3[0], sep3[1], sep4, sep5]
sepFinal = [sep1[0], sep1[1], sep2, sep3[0:1], sep3[1:2], sep4, sep5]
if flag == 0:
sepFinal = headers
flag = 1
print sepFinal
我的第一个问题是关于这个片段,特别是索引:
^{pr2}$注释的部分是我想做的,而未注释的部分是有效的。似乎我必须反转索引以获取正确的信息。“类型”似乎是相同的,都是列表。是我在开始的时候做得不对,还是我在这里遗漏了一些简单的东西?在
我的下一个问题也有类似的味道,来自下面的片段:
#sepFinal = [sep1[0], sep1[1], sep2, sep3[0], sep3[1], sep4, sep5]
sepFinal = [sep1[0], sep1[1], sep2, sep3[0:1], sep3[1:2], sep4, sep5]
为什么我只需使用0和1就可以从sep1
获取所需的信息,而对sep3
却不能这样做?在
最后,在打印列表sepFinal
时,sep4
和{sepFinal
的一个元素,但是sep4
和{sep4
和sep5
出现在我的列表中?在
编辑0:没有对此的输入。我将进入PowerShell,并键入python mySecretProgramName.py
来运行它。print sepFinal
显示以下括号:
>>> [element 1, element 2, element 3, [element 4], [element 5]]
从一开始,我希望它是:
>>> [element 1, element 2, element 3, element 4, element 5]
编辑1:由于数据拆分不正确,需要负索引。sepInit
的长度正在更改,因此索引不正确。感谢@martineau指出了这种可能性。我通过简单地将print(len(sepInit))
放在sepInit
之后的循环中进行测试。在
负索引信息:someList[-1]
获取列表中的最后一项,someList[-2]
获取列表中倒数第二项,等等
编辑2:这涉及sep3[0:1]
等。这实际上是从列表中抽取一部分,其中sep3[0:1]
将返回位于0和1之间的任何元素。在
目前没有回答
相关问题 更多 >
编程相关推荐