首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当将字符串赋值给变量时,无法转义转义引号

当将字符串赋值给变量时,无法转义转义引号
EN

Stack Overflow用户
提问于 2019-05-29 05:19:39
回答 2查看 73关注 0票数 0

我有一个bash命令要运行,为此我将它分配给一个变量。要运行的命令是:

代码语言:javascript
复制
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'

我可以用python3打印它,如下所示:

代码语言:javascript
复制
>>> print("papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}'))
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'

但是,当我将相同的值赋值给变量时:

代码语言:javascript
复制
a= "papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}')

我得到以下信息:

代码语言:javascript
复制
'papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y \'{"aviral":"srivastava"}\''

注意输出中的\

我希望通过变量赋值实现所需的结果(在print语句中完成)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-29 05:32:48

看看这个,

代码语言:javascript
复制
>>> print("papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}'))
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
>>> a= "papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}')

在这里,您看到的是\,因为它正在以单引号打印字符串文字。

代码语言:javascript
复制
>>> a 
'papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y \'{"aviral":"srivastava"}\''

如果您打印变量,它将看起来正常,如您所需。

代码语言:javascript
复制
>>> print(a) 
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
票数 1
EN

Stack Overflow用户

发布于 2019-05-29 05:27:37

这两个字符串完全相同。如果在IDE上运行这两个命令,或者使用python script.py通过终端运行,则可以观察到

代码语言:javascript
复制
print("papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}'))
a= "papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}')
print(a)

输出将是

代码语言:javascript
复制
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'

只是Python在单引号周围添加了一个额外的反斜杠,因为我们在字符串中也有双引号,反斜杠转义单引号以提供字符串的可打印表示

代码语言:javascript
复制
>>> print("papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}'))
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
>>> a= "papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}')
>>> print(a)
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
>>> a
'papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y \'{"aviral":"srivastava"}\''

转义字符串实质上是字符串的repr表示形式。

来自文档:https://docs.python.org/3/library/functions.html#repr

(物体) 返回包含对象可打印表示形式的字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56353559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档