使用python将分隔符解析为文本文件到列表中

时间:2017-10-27 20:33:48

标签: python string list

我有一个文本文件作为周期性元素属性的数据库,使用〜作为分隔属性和|的分隔符分开看起来像这样的不同元素:

  

1〜氢气〜H〜1.008〜1〜1 | 2〜氦〜赫〜4.002〜18〜1 | 3〜锂〜栗〜6.94〜1〜2 |

依旧...... 我试图将整个事情解析成一个如下所示的列表:

  

[“1~氢~H~1.008~1~1”,“2~氦~He~4.002~18~1”,“3~锂~Li~6.94~1~2”]

这是代码有的,我故意把它变成一个类:

class Parser:
    def __init__(self, path):
        self.file = open(path, "r")
        self.unparsed_info = self.file.read()
        self.element_list = ['']

    def parse_file(self, delimiter):
        for elements in self.unparsed_info.split(delimiter):
            self.element_list.insert(eval(elements.strip(delimiter)))

    def print_unparsed(self):
        print(self.unparsed_info)

    def print_parsed(self):
        print(self.element_list)

    def close_file(self):
        self.file.close()

Element_properties = Parser("element_properties.txt")
Element_properties.parse_file('|')
Element_properties.print_parsed()
Element_properties.close_file()

但是正如你们许多人可能知道的那样,这会将整个文本文件打印到列表的每个元素中。如何更改parse_file函数,以便只将一个段放入element_list的每个元素中?

2 个答案:

答案 0 :(得分:1)

我只想附加到self.element_list。这看起来像这样:

def __init__(self, path):
    self.file = open(path, "r")
    self.unparsed_info = self.file.read()
    self.element_list = [] # Make an empty list

def parse_file(self, string, delimiter):
    for elements in string.split(delimiter):
        e = elements.strip(delimiter)
        if e != '': # Check for empty strings
            self.element_list.append(e) #Append to list

这是我的输出:

['1~Hydrogen~H~1.008~1~1', '2~Helium~He~4.002~18~1', '3~Lithium~Li~6.94~1~2']

答案 1 :(得分:0)

也许是这样的:

def parse_file(self, delimiter):    
        self.element_list = [x for x in self.unparsed_info.split(delimiter) if len(x) > 0]