1

我想在 python 中使用 csv 格式的数据。我希望使每一列成为一个单独的字符串,我想知道是否有办法循环这个过程,这样我就不必单独指定每个字符串的名称(因为命名约定非常相似) .

对于许多 csv 列,我使用以下代码:

    dot_title=str(row[0]).lower()
    onet_title=str(row[1]).lower()

对于 [2]-[11],我希望每个字符串命名相同但编号。即,row[2] 将成为一个名为 onet_reported_1 的字符串,row[3] 将成为 onet_reported_2,row[4] 将成为 onet_reported_3...等等,一直到 row[12]。

有没有办法通过循环来执行此操作,而不是简单地单独定义 onet_reported_1、_2、_3、_4 等?

提前致谢!

4

1 回答 1

0

所以,首先要明确一点。

字符串是一种变量类型。在 Python 中,您可以通过将某些文本用单引号或双引号括起来来创建字符串。

"This is a string"
'So is this. It can have number characters: 123. Or any characters: !@#$'

字符串是可以分配给变量的值。所以你通过给它一个名字来使用一个字符串:

my_string = "This is a string"
another_string = "One more of these"

您可以对字符串执行不同类型的操作,例如将它们与+运算符连接起来

new_string = my_string + another_string

您可以创建字符串列表:

list_of_strings = [new_string, my_string, another_string]

看起来像["This is a stringOne more of these", "This is a string", "One more of these"]

要在循环中创建多个字符串,您需要一个地方来存储它们。列表是一个很好的候选:

list_of_strings = []
for i in range(1, 11):
    list.append("onet_reported_" + i)

但我认为你想要的是将变量命名为“onet_reported_x”,以便最终得到相当于:

onet_reported_1 = row[1] 
onet_reported_2 = row[2] 

等等,而不必输入所有多余的代码。这是一种很好的直觉。做这种事情的一个好方法是创建一个字典,其中键是您想要的字符串名称,值是row[i]'s。您可以循环执行此操作:

onet_dict = {}
for i in range(1, 11):
    onet_dict["onet_reported_" + i] = row[i]

或使用字典理解:

onet_dict = {"onet_reported_" + i: row[i] for i in range(1,11)}

两者都会给你相同的结果。现在您有了一个字符串集合,其中包含您想要的名称作为 dict 的键,这些键映射到您希望它们关联的行值。要使用它们,而不是直接引用名称onet_reported_x,您必须访问 dict 中的值,例如:

# Adding some other value to onet_reported_5. I'm assuming the values are numbers.

onet_dict["onet_reported_5"] += 20457
于 2021-05-26T12:38:46.067 回答