在 Python 中将多个字段解析为单色向量

发布于 2024-12-04 23:55:13 字数 360 浏览 0 评论 0原文

Python 中是否有一个好的模式可用于将输入文件的多行解析为单个值?例如,我有一个看起来像这样的输入文件:

BackgroundColor_R=0.0
BackgroundColor_G=0.0
BackgroundColor_B=0.0
BackgroundColor_A=0.0
DensityCorrection_Color_R=1.0
DensityCorrection_Color_G=1.0
DensityCorrection_Color_B=1.0

这个想法是将 BackgroundColor 和 DensityCorrection 放入单个颜色矢量对象中,但它们的大小不同,我希望避免每个参数的特殊逻辑。有什么想法吗?

Is there a good pattern in Python to use for parsing multiple lines of an input file into a single value? For example, I've got an input file that looks something like:

BackgroundColor_R=0.0
BackgroundColor_G=0.0
BackgroundColor_B=0.0
BackgroundColor_A=0.0
DensityCorrection_Color_R=1.0
DensityCorrection_Color_G=1.0
DensityCorrection_Color_B=1.0

The idea is to get BackgroundColor into a single color vector object as well as DensityCorrection but they are of different sizes and I've like to avoid special logic for each parameter. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

世界等同你 2024-12-11 23:55:14

您的数据有两种自然表示形式,一种基于配置文件的结构,另一种基于程序内的使用情况。本着 PEP 20(Python 之禅) 的精神,从一转换形式到另一种形式应该是明确的。

BackgroundColor = (float(config['BackgroundColor_R']),
                   float(config['BackgroundColor_G']),
                   float(config['BackgroundColor_B']),
                   float(config['BackgroundColor_A']))

Your data has two natural representations, one based on the structure of the config file and one based on the usage within the program. In the spirit of PEP 20 (the Zen of Python) the conversion from one form to another should be explicit.

BackgroundColor = (float(config['BackgroundColor_R']),
                   float(config['BackgroundColor_G']),
                   float(config['BackgroundColor_B']),
                   float(config['BackgroundColor_A']))
赏烟花じ飞满天 2024-12-11 23:55:14

您可以使用 ini 文件解析器解析此类文件。 http://docs.python.org/library/configparser.html

但数据结构取决于你。这取决于您的需求。

You can parse such file with ini file parser. http://docs.python.org/library/configparser.html.

But data structures is up to you. It depends on your needs.

旧时浪漫 2024-12-11 23:55:14

像这样的东西应该可以工作(但首先使用 configparser 会更好):

data = {}

for l in open('input').readlines():
    key, value = l.split("=")
    vector_name = key.split("_")[0]
    vector = data.get(vector_name,[])
    vector.append(value)
    data[vector_name] = vector

print data

Something like this should work (but using configparser would be better for the first bit):

data = {}

for l in open('input').readlines():
    key, value = l.split("=")
    vector_name = key.split("_")[0]
    vector = data.get(vector_name,[])
    vector.append(value)
    data[vector_name] = vector

print data
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文