【问题标题】:Script to read file per line and extract keys and values into variables?每行读取文件并将键和值提取到变量中的脚本?
【发布时间】:2020-08-15 11:58:09
【问题描述】:

我有一个包含多个 key=value 条目的文件 (filename.txt)。
我想编写一个 python 脚本来执行以下操作:

  1. 读取文件的每一行
  2. 对于每一行,将键提取到名为“key”的变量中,将值提取到名为“value”的变量中
  3. 打印第 1 行的变量“键”和“值”,然后继续到第 2 行

示例文件-

firstname=john
lastname=gates
age=12

预期输出-

firstname john
lastname gates
age 12

我使用了下面的正则表达式和 sed 命令,效果很好。在编写 for 循环和为每行捕获 2 个变量中的值时遇到麻烦

cat filename.txt | sed 's/.*=//'
cat filename.txt | sed 's/=.*//'

【问题讨论】:

  • 等等,你知道有 python 工具可以完成这项工作吗,即split
  • 你只是将第一个也是唯一一个 = 更改为一个空格,所以去sed 's/=/ /' filename.txt,即使我不知道你在做什么。

标签: python regex sed


【解决方案1】:

您需要读入文件并将值保存为字典:

kvps = {}
with open(file, 'r') as f:
    kvps = dict(line.strip().split('=') for line in f)

现在,要打印键和值,只需使用

for k,v in kvps.items():
    print(f"{k} {v}")

# firstname john
# lastname gates
# age 12

如果你只想打印键和值,你可以使用

with open(file, 'r') as f:
    for line in f:
        print(" ".join(line.strip().split('=')))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-12
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    相关资源
    最近更新 更多