【问题标题】:How to assign specific value of list into specific object in python?如何将列表的特定值分配给python中的特定对象?
【发布时间】:2018-08-14 20:09:16
【问题描述】:

我正在从外部来源获取我的文件的 header_information,例如如下:

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

请帮助我。

【问题讨论】:

  • 能贴出问题代码吗?您是否也考虑过使用字典来命名您的变量?
  • 如何知道元素之间的区别?你不能告诉 python spiky 是狗还是 place,除非你构建了一个复杂的 AI 解决方案。

标签: python python-3.x python-2.7 python-requests


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    虽然您没有在问题中提供这一点,但我的水晶球告诉我,您正在尝试读取具有任意顺序字段的 csv 文件,并以特定定义的顺序将它们写回。

    您可以为此使用csv.DictReadercsv.DictWriter

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

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

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

    无论源文件中的顺序如何,每次都会按此特定顺序打印数据。请注意,您不需要为每个值使用单独的变量,因为通过使用 dicts,您可以将命名空间保留在 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)
    

    此代码将以任何顺序读取带有标题的文件,但以代码中确定的特定顺序写回另一个文件。

    【讨论】:

      猜你喜欢
      • 2021-05-09
      • 2021-12-10
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 2022-01-15
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多