在python中如何将list的特定值赋给特定的对象?

2024-05-23 22:09:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我从外部源获取文件的头信息,例如:

header_information="studentname,branch,collage,place"

之后,我将字符串转换为字符串列表。你知道吗

headerlist=header_information.split(",")
sid=headerlist[0]
bran=headerlist[1]
coll=headerlist[2]
plc=headerlist[3]

根据我的要求,我必须用指定的顺序创建另一个列表。 例如:

list1=[coll,plc,sid,bran]

但有些时候标题会出现不同的(顺序)字符串。你知道吗

header_information="collage,branch,studentname,place"
but as per my above code :`sid=headerlist[0]`
it will assign `sid=coll`

but i should always assign expected output is like below   
sid="studentname"
coll="collage"
bran=="branch"
plc="place

请帮我解决这个问题。你知道吗


Tags: 字符串branch列表information顺序placebutplc
2条回答

你需要一些区分每个项目的方法,否则这项任务几乎是不可能的。您知道每个标题参数的所有可能输入吗?你的代码必须有某种方式知道哪个子串是哪个,而不知道什么名字是大学,什么名字是学生的名字。例如,每个学生的名字都包含空格吗?每个分支名称都包含分支这个词吗?学生证是一个号码吗?您必须为每个字段找到一个唯一的属性并基于该属性进行分配,或者向外部源投诉并获得一致的标题。你知道吗

虽然你没有在你的问题中提供,我的水晶球告诉我,你试图读取一个csv文件的字段在任意顺序,并写回他们在一个特定的定义顺序。你知道吗

您可以使用csv.DictReadercsv.DictWriter来实现:

with open('yourcsvfile.csv') as f:
    cf = csv.DictReader(f)

这将解析头并为您提供一个对象,该对象将生成每个头部分指向一个值的dict-顺序无关紧要,因为您使用头名称本身来引用一个值:

    for row in cf:
        print(row['collage'], row['place'], row['studentname'], row['branch'])

无论源文件中的顺序如何,每次都将按此特定顺序打印数据。注意,每个值不需要单独的变量,因为通过使用dict,可以将名称空间保持在row变量中。你知道吗

可以按头的特定顺序写回文件:

with open('yourcsvfile.csv') as f:
    cf = csv.DictReader(f)
    with open('destination.csv', 'w') as fw:
        cw = csv.DictWriter(fw, ['collage', 'place', 'studentname', 'branch'])
        cw.writeheader()
        cw.writerows(cf)

这段代码将以任何顺序读取一个头文件,但以代码中确定的特定顺序写回另一个文件。你知道吗

相关问题 更多 >