【问题标题】:Python 2.7: String formatting for JSONPPython 2.7:JSONP 的字符串格式化
【发布时间】:2015-11-12 16:57:49
【问题描述】:

我有两个单独调用的脚本,Script 1 调用 Script 2 并返回两者的输出。结果是一个 JSONP 字符串,它有一个由Script 2 在print 末尾添加一个新行引起的换行符。

我正在运行Python 2.7.10。执行第二个脚本时,我通常会遇到以下错误之一:

TypeError: expected a character buffer object 或 invalid syntax 用于使用 Python 3 命令。

如何确保生成的字符串中没有换行符?

脚本 1(脚本 2 调用):

jsonstring = subprocess.check_output(['python',"scripts/"+path+'.py'],shell=False)
return "%s(%s)" % (request.query.callback, jsonstring)

脚本 2:

import json
def func():
    jsonString = \
        """[ 
            { "DT_RowId": "row_1", "size": "medium", "color": "red" },
            { "DT_RowId": "row_2", "size": "large", "color": "blue" },
            { "DT_RowId": "row_3", "size": "medium", "color": "white" }
        ]"""
    print(jsonString), #end="", flush=True) Available from Python 3
func()

结果字符串:

jQuery111306445024223066866_1447346051405([{'size': 'medium', 'color': 'red', 'DT_RowId': 'row_1'}, {'size': 'large', 'color': 'blue', 'DT_RowId': 'row_2'}, {'size': 'medium', 'color': 'white', 'DT_RowId': 'row_3'}]
)

【问题讨论】:

    标签: python python-2.7 jsonp newline string-formatting


    【解决方案1】:

    对于脚本 2,请尝试:

    from __future__ import print_function
    

    然后在行尾使用不带 \n 的打印功能

    print(jsonString, end='')
    

    相关文档:https://docs.python.org/2/whatsnew/2.6.html#pep-3105-print-as-a-function

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 1970-01-01
      相关资源
      最近更新 更多