使用python进行标记和解析

时间:2015-07-27 13:19:58

标签: python parsing token tokenize

我没有向您展示的代码,因为我不知道如何开始。 目前的目标是至少能够从包含一些数据的文件创建令牌 例如:

file.txt的

Name : Sid
data : Lazy Developer

%description 
This is a packaging file 

%install
 Enter the location to install the package.

并且python代码应该能够从该文件创建标记,然后在需要时根据输入打印数据。

如果getData()是函数,那么

getData('name')应输出“Sid” GetData('description')应该给出它下面的文本。

2 个答案:

答案 0 :(得分:0)

要从file.txt检索数据:

data = {}
with open('file.txt', 'r') as f: # opens the file
    for line in f: # reads line by line
        key, value = line.split(' : ') # retrieves the key and the value
        data[key.lower()] = value.rstrip() # key to lower case and removes end-of-line '\n'

然后,data['name']返回'Sid'

修改     随着问题的更新,这是新的解决方案:

data = {}
with open('file.txt', 'r') as f:
    header, *descriptions = f.read().split('\n\n')
    for line in header.split('\n'):
        key, value = line.split(' : ')
        data[key.lower()] = value.rstrip()
    for description in descriptions:
        key, value = description.split('\n', 1)
        data[key[1:]] = value
print(data)

如果行之间或键的末尾有一些空格,你可能需要调整它...

执行此操作的较短方法可能是使用regex和方法re.group()

答案 1 :(得分:-2)

正如评论员所说,你的问题并不适合网站。但是,我会试着指出你正确的方向。

您的file.txt实际上是一个yaml文档。见this answer

import yaml
with open('file.txt', 'r') as f:
    doc = yaml.load(f)
print(doc["Name"])

我还强烈建议您阅读this sectionDive Into Python(以及阅读整本书)。将来尝试一些代码并与您的问题分享。