当我读取文件的数据时,为什么它不起作用,但是当它们被硬编码时它会起作用?

时间:2018-04-13 13:06:24

标签: python python-3.x format

我的数据硬编码如下:

labels1 = [{'yMax': u'780.797833935018', 'xMax': u'587.5438596491229', 'xMin': u'366.84210526315786',
                'yMin': u'613.9097472924188', 'id': '1', 'name': ''},
               {'yMax': u'244.37184115523468', 'xMax': u'2096.6666666666665', 'xMin': u'2057.8947368421054',
                'yMin': u'125.16606498194946', 'id': '2', 'name': ''}]

它在后面的步骤中按预期工作。

然而,我的数据是数千行,所以我必须格式化它,在txt文件上打印然后读取它的方法用来写它:

f.write('{{\'yMax\': u\'{}\', \'xMax\': u\'{}\', \'xMin\': u\'{}\',\'yMin\': u\'{}\', \'id\': \'{}\', \'name\': \'\'}}\n'.format(ymax, xmax, xmin, ymin,id))

然后我用来读取该文件的方法:

with open('1-0.txt') as f:
    labels1 = f.readlines()
labels1 = [x.strip() for x in labels1]
print(labels1)

印刷品的输出是:

["{'yMax': u'156', 'xMax': u'4802', 'xMin': u'4770','yMin': u'141', 'id': '1', 'name': ''}","{'yMax': u'156', 'xMax': u'4956', 'xMin': u'4931','yMin': u'145', 'id': '4', 'name': ''}"]

(不是2的确切数据,但不应该重要),但是使用这些值时,当我使用上述代码读取它们时,它们只是不按预期在后续步骤中工作,为什么? !

1 个答案:

答案 0 :(得分:2)

您实际上是在阅读和编写字典,使用json模块可以很好地处理这些字典。

尝试这样的事情(我将labels1重命名为data只是因为):

import json    

# Write the data to a file.
with open('1-0.txt', 'w') as file:
    file.write(json.dumps(data))

# Read them back.
with open('1-0.txt', 'r') as file:
    data = json.load(file)