将python中定义的变量解析为文本文件

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (122)

我是新人并寻求帮助。我已经能够使用定义的变量权重的输出创建一个文本文件。但它写入/打印/发布的数据比我需要的要多得多。我跟随.py的情况如下。

#!/usr/bin/python
import myfitnesspal
import requests
import lxml
import measurement
import six
import mock
import datetime

client = myfitnesspal.Client('username', 'password')

weight = client.get_measurements('Weight')
print weight

file = open("ChrisFitPal.txt", "w") 
file.write(repr(weight) + '\n' )
file.close() 

我得到的输出是文本文件中的以下内容但我只希望它显示文本的片段

这是它在文本文件中显示的内容

OrderedDict([(datetime.date(2019,1,2),174.4),(datetime.date(2018,12,26),175.6),(datetime.date(2018,12,21),175.1),(datetime) .date(2018,12,13),173.2),(datetime.date(2018,12,7),175.0)])

我只想让文本文件以粗体和斜体显示数字而不是其他内容。所以输出就是

174.4

这可能吗?

提问于
用户回答回答于

看起来你正在返回一个字典client.get_measurements('Weight'),所以你可以将它转换为列表并索引以获得只有某个项目

d={'a':1,'b':2,'c':3}

list(d.items())
[('a', 1), ('b', 2), ('c', 3)]

list(d.items())[0]
('a', 1)

list(d.items())[0][1]
1
用户回答回答于

你可以改变:

file.write(repr(weight) + '\n' )

至:

file.write(a[next(iter(a))] + '\n' )

这里:

a = OrderedDict([(datetime.date(2019, 1, 2), 174.4), (datetime.date(2018, 12, 26), 175.6), (datetime.date(2018, 12, 21), 175.1), (datetime.date(2018, 12, 13), 173.2), (datetime.date(2018, 12, 7), 175.0)])

这为您提供了OrderedDict值的迭代器对象。您调用next将迭代器推进1,为您提供第一项的键。然后,您可以使用该密钥访问存储的值。

扫码关注云+社区

领取腾讯云代金券