转义字符串中的引号

时间:2011-06-08 07:53:24

标签: python regex escaping

我有一个python词典,例如:

[{"pk":"1","name":"John","size":"1/4" "},{},{},etc]

那个大小是1/4英寸,我怎么会“逃脱”那个引用?所以它仍然会显示为1/4“,

它是一个列表,所以我不能像1/4\"那样手动编写代码, 我试过了replace('"','\"')

编辑: 原始列表是我的Django模型中的文本字段:

[{'pk': '91', 'size': '', 'name': 'Thread Flat For BF', 'quantity': '2'}, {'pk': '90', 'size': '', 'name': 'Blade Holders Straight ', 'quantity': '26'},{'size':'3"','name':'2m 1/4" Round bar', 'quantity':'43'},{'size':'5','name':'2m 1/8" Round bar', 'quantity':'4'}]

下一步我必须为jQuery准备列表,所以我这样替换它以正确的json语法。 mat_list = manufactured_pa​​rt.material_list.replace(“'”,'“')

然后我有这个清单:

[{"pk": "91", "size": "", "name": "Thread Flat For BF", "quantity": "2"}, {"pk": "90", "size": "", "name": "Blade Holders Straight ", "quantity": "26"},{"size':"3"","name':"2m 1/4" Round bar", "quantity":"43"},{"size":"5","name":"2m 1/8" Round bar", "quantity":"4"}]

所以现在列表被发送到模板,我用jquery循环遍历它,但由于“在字符串中”,列表被打破了。

所以...我需要逃避那些“让列表工作,否则它有明显的语法错误。

希望现在有意义。

由于

5 个答案:

答案 0 :(得分:31)

您需要在替换中转义反斜杠才能打印出来。试试

replace('"','\\"')

答案 1 :(得分:5)

没有必要以艰难的方式去做。让Django serialize为您设置查询。

答案 2 :(得分:1)

我有同样的问题,我使用了python内置的转义方法。 这样的事情对我有帮助

[{"pk":"1","name":"John","size":"1/4\" "},{},{},etc]

价: -

  

http://docs.python.org/2/reference/lexical_analysis.html#string-literals

答案 3 :(得分:1)

使用

shlex.quote("string")

pipes.quote("string")

取决于python版本对我有用。

您可以在此处查看更多详细信息

https://github.com/python/cpython/blob/master/Lib/shlex.py#L281

答案 4 :(得分:0)

你说:

  

我必须为jQuery准备列表

所以我假设您正在尝试将字符串形式的Python对象输出到模板文件中,进行转换,以便输出字符串是有效的Javascript代码。

这相当于将它们序列化为JSON。

这是一个已经解决的问题,而不是用双引号等替换单引号,只需这样做:

import json

my_python_data = [{'pk': '91', 'size': '', 'name': 'Thread Flat For BF', 'quantity': '2'}, {'pk': '90', 'size': '', 'name': 'Blade Holders Straight ', 'quantity': '26'},{'size':'3"','name':'2m 1/4" Round bar', 'quantity':'43'},{'size':'5','name':'2m 1/8" Round bar', 'quantity':'4'}]

str_to_output_in_js_template = json.dumps(my_python_data)

这将为您处理所有转义并确保结果是有效的Javascript对象。