【问题标题】:Store a specific value in a line in python在python的一行中存储一个特定的值
【发布时间】:2020-08-16 22:36:54
【问题描述】:

我有一个 txt 输出文件,我想在行中存储一些值。

TBabs*powerlaw   
2 PhoIndex 2.427 3.447  FFFFFFFFF
3 norm 8.454501369e-06 1.387320996e-05  FFFFFFFFF
0p3_1p5abs 1.512967493e-14 1.326152487e-14 1.822308766e-14
0p3_1p5plunabs -13.50750953 -13.21090697  FFFFFFFFF
TBabs(powerlaw + diskbb)
Ftest: 11.9512537 14 11.9512537 12 1

在上面的 txt 文件中,我想存储 PhoIndex 的值(2.427 和 3.447)。我尝试了以下方法:

my_list=[]
filepath = 'output'
with open(filepath) as fp:
   for line in fp:
       if line=="PhoIndex"       
       my_list.append(line)

我不想根据它们的顺序对它们进行索引,因为输出是动态的,而且 PhoIndex 可能在另一行。因此,我能想到的唯一合乎逻辑的方法是,如果某个变量与该关键字相等,则将值存储在该行中。事实上,最有用的是创建一个空的dictionary 并能够在输出中填充值,例如

循环前:

source = {
 'model': '',
 'PhoIndex': np.array([]),
 'norm': np.array([]),
 '0p3_1p5abs': np.array([]),
 '0p3_1p5plunabs': np.array([]),
}

循环之后:

source = {
 'model': 'TBabs*powerlaw',
 'PhoIndex': np.array([2.427, 3.447]),
 'norm': np.array([8.454501369e-06, 1.387320996e-05]),
 '0p3_1p5abs': np.array([1.512967493e-14, 1.326152487e-14,1.822308766e-14]),
 '0p3_1p5plunabs': np.array([0p3_1p5plunabs,-13.50750953, -13.21090697]),
}

但我几乎不知道该怎么做。我感谢任何有关上述任何问题的帮助。

【问题讨论】:

    标签: python arrays python-3.x list dictionary


    【解决方案1】:

    if line=="PhoIndex"

    您正在检查该行是否等于该字符串。您应该使用

    验证检查的行是否包含该字符串

    if "PhoIndex" in line:

    打开你的循环。 然后,您可以通过分隔每个空格上的字符串元素,将行转换为列表,如下所示:

    line_array = line.split(" ")

    然后,鉴于您的数字始终是此列表的第三个和第二个元素,如果它是 PhoIndex 行,您可以使用

    line_array.pop() ## remove the last element

    line_array.pop(0)

    line_array.pop(0) ## remove the first two elements

    然后只需对每一行执行此操作,通过使用相应的字符串来查询行的类型(如“PhoIndex”)并根据行结构弹出相应的列表。如果您的 txt 文件始终具有常规结构,则此方法有效。如果不是,那么简单地以相同的方式继续直到split方法,然后通过将它们与所有其他元素区分开来的特征检索您需要的已创建列表的元素,例如包含句点字符等。

    剩下的是空模板字典的定义,就像您在上面的“循环之前”所做的那样,然后将您获得的列表分配为它们各自字典键的值。完成。

    【讨论】:

    • 谢谢。您认为是否可以创建一个空的数据结构(或字典)并通过 txt 文件的输出填充它?
    • 是的,当然,我在之前的项目中正是这样做的,在该项目中,我通过执行上述逻辑来自动对来自大量文本文件的数据进行统计评估。在这种情况下,您还可以使用import astast.literal_eval(string_to_convert) 将作为字符串从txt 文件中检索到的string_to_convert 存储为相应字典中的浮点数或整数。如果您还有其他问题,请告诉我。
    猜你喜欢
    • 2022-06-13
    • 2014-05-09
    • 2013-08-23
    • 2013-02-26
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    相关资源
    最近更新 更多