我有一个文本文件,其中有几个单行字符串,它们的排列顺序并不总是相同的,但通常包含一些相同的信息。你知道吗
例如
(Names RED (property (x 123) (y 456) (type MT) (label ONE) (code XYZ)))
(Names GREEN (property (type MX) (label TWO) (x 789) (y 101)))
在这种情况下,不需要从每一行读入所有内容,在本例中,只需要“Name”、“x”、“y”、“label”和“code”。假设我有几百行,看起来像这个例子,有可能很容易得到我想要的每一行的数据吗?理想情况下,我尝试将信息传递到pandas数据帧中,但问题主要是在没有实际模式的情况下,如何正确地regex字符串。你知道吗
数据帧可能是什么样子的示例(如果这有助于理解问题的话)
Names x y label code
RED 123 456 ONE XYZ
GREEN 789 101 TWO
regex是解决这个问题的最佳方法吗?没有真正的模式,我已经发现,当看所有的线,所以它可能不是理想的。你知道吗
您可以通过在
()
之间进行拆分和提取来稍微操纵字符串。需要首先在“(”上拆分以删除前两级嵌套。你知道吗输出:
一个非常基本和直接的实现(只是向您展示,您可以在提出问题之前从这里开始,并获得更多的可信度):
输出(字符串1):
输出(字符串2):
这个模式是有规律的,除了任何顺序的属性之外,所以它肯定是可行的。我分两步完成了这项工作—一步是正则表达式获取开头的颜色并提取属性字符串,另一步是提取属性。你知道吗
给出的输出是
要将其放入
pandas
,可以在列表字典中累积属性(我在下面使用了defaultdict
)。您需要为空值存储一些内容,以便所有列的长度相同,这里我只存储None(或null)。最后用pd.DataFrame.from_dict
得到你的最终DataFrame
。你知道吗最终输出为
相关问题 更多 >
编程相关推荐