我有一个文本文件作为周期性元素属性的数据库,使用〜作为分隔属性和|的分隔符分开看起来像这样的不同元素:
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的每个元素中?
答案 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]