一,背景

python的单引号,双引号的使用一直有些疑问,今天通过几个例子算是弄清楚了。

话不多说,先看一个有趣的例子

a   =  '"{"name":"test"}"'
a1  =  '\"{"name":"test"}\"'
a2  =  '\"{\"name\":\"test\"}\"'
a3  =  '{'name':'test'}'
b   =  ""{"name":"test"}""
b1  =  "\"{"name":"test"}\"}"
b2  =  "\"{\"name\":\"test\"}\"}"
c   =  "{"name":"test"}"
c1  =  "{\"name\":\"test\"}"
c2  =  "{'name':'test'}"
d   =  "'{"name":"test"}'"
d1  =  "\'{"name":"test"}\'"
d2  =  "'{\"name\":\"test\"}'"
d3  =  "'{'name':'test'}'"

二,提问

请问这几个变量的输出分别是什么?

大家可以在自己的机器上试一下。这里我只解释一下产生这样结果的原因。

三,说明原因

  1. a是正确的。代表:"{"name":"test"}"的字符串。该字符串包含最外面的两个引号。

  2. a1,a2其实代表的意思和a是一样的。

  3. a3会报错,是因为当输入'{'name':'test'}',计算机会按照单引号进行匹配。其实你输入的是'{',name,':',test,'}'这五个字符串,第一个'{'没问题,但是name输入就不正确了,后面也是一样。

  4. b会报错,原因和上面第三条一样。

  5. b1也会报错,原因和上面第三条类似,有一点差别,这里解释一下。其实b1的字符串才分成了如下字符
    "\"{",name,":",test,"}\"}""\"{"表示将中间的双引号转义,实际表示的字符串为:"{
    所以还是报错。

  6. b2是正确的,因为python的解释器会找找最后一个不是转义过的",就在字符串的末尾。

  7. c是错误的。原因和a3一样。

  8. c1是正确的。表示:{"name":"test"}字符串。

  9. c2也是正确的。"{'这样的情况python解释器不会当成一个字符串处理,所以不会出现a3的错误。表示:{'name':'test'}的字符串。

  10. d是错误的。同样的理论就可以解释。python解释器实际识别为:"'{"name":"test"}'"

  11. d1是错误的。python解释器识别为这几个字符串"\'{"name":"test"}\'"

  12. d2是正确的。d2代表:'{"name":"test"}'这个字符串。

  13. d3是正确的。d3代表:'{'name':'test'}'这个字符串。

四,附加说明

对于a这种情况要特别注意,有时写程序在读取数据时,会把数据读成"{"xxx":"xxx"}"。这样在使用json字符串转换为字典的操作时就会报错。所以为了能正确转换成字典,可以使用eval(a)将"{"xxx":"xxx"}"转换成{"xxx":"xxx"}字符串。eval函数是什么意思,我们在后续的文章中进一步说明,敬请期待。

python 单引号,双引号用法的理解相关推荐

  1. 小白爬坑记:C语言学习点滴——我对单、双引号的理解

    小白爬坑记:C语言学习点滴--我对单.双引号的理解 一.单引号的作用: 二.双引号的作用: 三.字符或字符串容易犯的错误: 三.做个小题: 一.单引号的作用: 将单引号中间的所有符号直接转换为ASCI ...

  2. python字符串加双引号是什么意思_python字符串表示什么?

    原标题:python字符串表示什么? python的字符串就是表示一串字符,字符可以是中文,英文或者数字,或者混合的文本. python字符串的几种表达方式 1 使用单引号扩起来字符串 >> ...

  3. javascript中字符串的‘单‘与“双“引号

    通常在使用 javascript 进行编码时,您会遇到对字符串使用"单"或"双"引号的情况,并且想知道两者之间是否有任何真正的区别,如果有,使用一个是否有优势其 ...

  4. Shell中 单引号(‘‘) 双引号(““) 反引号(``) $() 的区别

    字符串与引号 Shell 的模型就是标准的字符流过滤器模型,简单来说,就是一条命令把结果送到标准 输出,这个标准输出被连接到下一个命令的标准输入,由此来实现一系列命令之间的联动. 每一个命令的输出都是 ...

  5. Linux中单引号双引号的区别与用法

    1.单引号 单引号将其中的内容都作为了字符串来,忽略所有的命令和特殊字符,类似于一个字符串的用法 echo 'This is a string' >>> This is a stri ...

  6. 单引号, 双引号,反引号的区别

    单引号, 双引号,反引号的区别 区别: 区别: 单引号: 所见即所得 里面的内容会原封不动显示出来 双引号: 会解析里面的变量和特殊符号 反引号: 反引号里面的内容会被优先执行 [root@alice ...

  7. LaTeX如何正确输入引号:双引号“”单引号‘’

    最近看一些latex用户的文章,输入的双引号和单引号都是用输入法中的中文模式键入,并不是LaTeX的正确输入方式. 正确的输入方法如下: 使用键盘的 Tab键上侧的LaTeX技巧218:LaTeX如何 ...

  8. php中单引号 双引号的区别,PHP中单引号与双引号的区别

    一.引号定义字符串 在PHP中,通常一个字符串被定义在一对引号中,如: 'I am a string in single quotes' "I am a string in double q ...

  9. 终于知道 Shell 中单引号双引号的区别了

    在编写 shell 脚本或输入命令时,你可能已经注意到大多数命令都可以使用单引号 或双引号, 这不仅适用于 shell 脚本,而且适用于所有 Bash 命令, 但是两种类型的引号以及 Bash she ...

  10. mysql sql语句 引号_sql语句中单引号,双引号的处理方法

    关于Insert字符串 很多同学都在(单引号,双引号)这个方面发生了问题,其实主要是因为数据类型和变量在作怪. 下面我们就分别讲述,虽然说的是Insert语句, 但是Select.Update.Del ...

最新文章

  1. 转载:用 Tomcat 和 Eclipse 开发 Web 应用程序
  2. 华为服务器MLC硬盘ID号,RH2288H RH5885H V3 3.5寸 SAS SATA华为服务器硬盘架子 支架
  3. Spring@Configuration、@Bean、@Import 、@ImportResource、@DependsOn 说明
  4. 智能合约如何可信的与外部世界交互
  5. 前后端分离WebStorm自动部署到tomcat服务器
  6. lostash Timeout executing grok 问题排查
  7. openGl学习之基本图元
  8. 论文浅尝 | 机器阅读理解中常识知识的显式利用
  9. 【Kotlin】我的第一个 Kotlin 程序
  10. python_thrift
  11. Silverlight WCF RIA服务(二十九)Silverlight 客户端 10
  12. 15.深入分布式缓存:从原理到实践 --- 同程凤凰缓存系统基于Redis的设计与实践
  13. 鼠标处显示坐标 html,cesium的鼠标事件(最基础的显示鼠标位置坐标)
  14. 精尽Spring Boot源码分析 - 内嵌Tomcat容器的实现
  15. 编译安装python3.6
  16. 新智云助力西门子杨浦楼宇能源开放实验室
  17. 公司注册认缴资金多久
  18. 利用数组操作实现灰度图像放大两倍(C++opencv)
  19. Intel RealSense CAD files(STL 模型)
  20. GAMS语法初级教程

热门文章

  1. IDEA社区版搭建web项目
  2. 爬虫字体替换(一)天眼查
  3. 计算机软件类自然科学基金标书,国家自然科学基金标书撰写——体会6(转发仅供参考)...
  4. 了解记录管理系统RMS
  5. spring 解决循环依赖
  6. 高位十字星收盘什么意思?高位十字星缩量是什么?
  7. U盘引导安装centos7
  8. ubuntu18 搜狗输入法不显示
  9. 如何给网页添加icon图标?
  10. 多个excel表合并成一个excel表