在python中,如何编写包含brakets和引号的文本文件?

时间:2017-10-07 08:28:34

标签: python variables text

Python初学者在这里,我真的在努力处理我想要打印的文本文件:

{"geometry": {"type": "Point", "coordinates": 
[127.03790738341824,-21.727244054924235]}, "type": "Feature", "properties": {}}

有多个括号的事实使我感到困惑,并在尝试此操作后抛出Syntax Error

def test():
    f = open('helloworld.txt','w')
    lat_test = vehicle.location.global_relative_frame.lat
    lon_test = vehicle.location.global_relative_frame.lon
    f.write("{"geometry": {"type": "Point", "coordinates": [%s, %s]}, "type": "Feature", "properties": {}}" % (str(lat_test), str(lat_test)))
    f.close()

正如您所看到的,我有自己的纬度和经度变量,但是python会抛出语法错误:

File "hello.py", line 90
f.write("{"geometry": {"type": "Point", "coordinates": [%s, %s]}, "type": 
"Feature"" % (str(lat_test), str(lat_test)))
                  ^
SyntaxError: invalid syntax

非常感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:1)

您传递给f.write()的字符串未正确格式化。尝试:

f.write('{"geometry": {"type": "Point", "coordinates": [%s, %s]}, "type": "Feature", "properties": {}}' % (lat_test, lon_test))

这使用单引号作为最外面的引号集,并允许嵌入双引号。此外,您不需要在{* 1}}附近,只要str()%s运行str()。你的第二个也不正确(你通过了两次lat_test),我在上面的例子中修复了它。

如果你在这里做的是编写JSON,那么使用Python的JSON模块来帮助将Python字典转换为JSON字段会很有用:

import json

lat_test = vehicle.location.global_relative_frame.lat
lon_test = vehicle.location.global_relative_frame.lon

d = {
    'Geometry': {
        'type': 'Point',
        'coordinates': [lat_test, lon_test],
        'type': 'Feature',
        'properties': {},
    },
}

with open('helloworld.json', 'w') as f:
    json.dump(d, f)

答案 1 :(得分:0)

您还可以使用tripple引用:

f.write("""{"geometry": {"type": "Point", "coordinates": [%s, %s]}, "type": "Feature", "properties": {}}""" % (str(lat_test), str(lat_test)))

但在这个具体案例中,json包完成了这项工作。