“u”和“r”字符串前缀到底有什么作用,什么是原始字符串文字?

2023-12-06

一边询问这个问题,我意识到我对原始字符串了解不多。对于自称是 Django 培训师的人来说,这很糟糕。

我知道什么是编码,我也知道什么u''自从我了解了什么是 Unicode 以来,就只有这个了。

  • 但有什么作用r''究竟做什么?它会产生什么样的字符串?

  • 最重要的是,到底是做什么的ur'' do?

  • 最后,有没有可靠的方法可以从 Unicode 字符串返回到简单的原始字符串?

  • 啊,顺便说一句,如果您的系统和文本编辑器字符集设置为 UTF-8,u''实际上做了什么吗?


其实并没有什么“原始的”string“;有原始的字符串文字,它们正是由 标记的字符串文字'r'在开盘报价之前。

“原始字符串文字”与字符串文字的语法略有不同,其中反斜杠,\, 被视为“只是一个反斜杠”(除非它出现在引号之前,否则会终止文字)——没有“转义序列”来表示换行符、制表符、退格键、换页符等。在普通字符串文字中,每个反斜杠必须加倍以避免被视为转义序列的开头。

这种语法变体的存在主要是因为正则表达式模式的语法中含有大量反斜杠(但永远不会出现在末尾,因此上面的“except”子句并不重要),并且当您避免将它们中的每一个都加倍时,它看起来会更好一些 - - 就这样。它在表达本机 Windows 文件路径(使用反斜杠而不是像其他平台上的常规斜杠)方面也受到了一些欢迎,但很少需要(因为普通斜杠大多数在 Windows 上也能正常工作)并且不完善(由于“例外”子句)多于)。

r'...'是一个字节字符串(在 Python 2.* 中),ur'...'是一个 Unicode 字符串(同样,在 Python 2.* 中),其他三种引用中的任何一种也会生成完全相同类型的字符串(例如r'...', r'''...''', r"...", r"""..."""都是字节字符串,依此类推)。

不知道你所说的“去”是什么意思back“ - 本质上没有前后方向,因为没有原始字符串type,它只是表达完全正常的字符串对象、字节或 unicode 的替代语法。

是的,在 Python 2.* 中,u'...' is当然总是不同于只是'...'-- 前者是unicode字符串,后者是字节字符串。文字可以用什么编码来表达是一个完全正交的问题。

例如,考虑(Python 2.6):

>>> sys.getsizeof('ciao')
28
>>> sys.getsizeof(u'ciao')
34

Unicode 对象当然需要更多的内存空间(对于很短的字符串来说,差异非常小,显然;-)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“u”和“r”字符串前缀到底有什么作用,什么是原始字符串文字? 的相关文章

  • Tkinter:消息小部件中锚点选项的正确值是多少?

    我一直在学习 tkinterTkinter 中的消息小部件 https python course eu tkinter message widget in tkinter php at Python 课程和教程 https python
  • 将 yerr/xerr 绘制为阴影区域而不是误差线

    在 matplotlib 中 如何将误差绘制为阴影区域而不是误差条 例如 而不是 忽略示例图中各点之间的平滑插值 这需要进行一些手动插值 或者只是获得更高分辨率的数据 您可以使用pyplot fill between https matpl
  • 尝试从网页Python和BeautifulSoup获取编码

    我试图从网页检索字符集 这会一直改变 目前我使用 beautifulSoup 来解析页面 然后从标题中提取字符集 这工作正常 直到我遇到一个网站 到目前为止 我的代码以及与其他页面一起使用的代码是 def get encoding soup
  • Python re无限执行

    我正在尝试执行这段代码 import re pattern r w w s re compiled re compile pattern results re compiled search COPRO HORIZON 2000 HOR p
  • 数据框 - 平均列

    我在 pandas 中有以下数据框 Column 1 Column 2 Column3 Column 4 2 2 2 4 1 2 2 3 我正在创建一个数据框 其中包含第 1 列和第 2 列 第 3 列和第 4 列等的平均值 ColumnA
  • 将 C++ 指针作为参数传递给 Cython 函数

    cdef extern from Foo h cdef cppclass Bar pass cdef class PyClass cdef Bar bar def cinit self Bar b bar b 这总是会给我类似的东西 Can
  • 使用 Python 3 动态插入到 sqlite

    我想使用 sqlite 写入多个表 但我不想提前手动指定查询 有数十种可能的排列 例如 def insert sqlite tablename data list global dbc dbc execute insert into tab
  • 检查 python 中命令行参数的数量

    我是蟒蛇新手 还是把脚弄湿了 我正在尝试做这样的事情 import sys if len sys argv lt 3 or lt len sys argv gt 3 print This script will compare two fi
  • 为什么第二个 request.session cookies 返回空?

    我想使用 requests Session post 登录网站 但是当我已经登录主页 然后进入帐户页面时 看来cookies还没有保存 因为cookies是空的 而且我无法进入正确的帐户页面 import requests from bs4
  • 如何将 sql 数据输出到 QCalendarWidget

    我希望能够在日历小部件上突出显示 SQL 数据库中的一天 就像启动程序时突出显示当前日期一样 在我的示例中 它是红色突出显示 我想要发生的是 当用户按下突出显示的日期时 数据库中日期旁边的文本将显示在日历下方的标签上 这是我使用 QT De
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • 仅当某些值相等时,如何才能将一个文本文件中的值替换为另一个文本文件中的其他值?

    我有一个名为finalscores txt我想创建一个 python 脚本 它将打开它并从两个单独的列中读取值 这是我的finalscores txt file Atom nVa predppm avgppm stdev delta QPr
  • 更改QLineEdit的ClearButton图标

    我想在Windows 10 1909 64位 上的Python 3 8和PyQt5 5 15 0 上更改我的QLineEdit的ClearButton图标 稍后我想在Linux上运行代码 我尝试应用此处找到的代码 如何在 QLineEdit
  • 使用标签或 href 传递 Django 数据

    我有一个包含链接的表 当单击该链接进行更多操作时 我想将一些数据传递给我的函数 my html table tbody for query in queries tr td value a href internal my func que
  • Discord.py 嵌入中禁用按钮/冻结按钮

    I m trying to make a replica of this bot in which when I press any of the buttons below it shows a dropdown menu and you
  • 根据多个阈值将 SciPy 分层树状图切割成簇

    我想将 SciPy 的树状图切割成多个具有多个阈值的簇 我尝试过使用 fcluster 但它只能削减一个阈值 例如 这是我从另一个问题中摘取的一段代码 import pandas data pandas DataFrame total ru
  • 在 numpy 中连接维度

    我有x 1 2 3 4 5 6 7 8 9 10 11 12 shape 2 2 3 I want 1 2 3 4 5 6 7 8 9 10 11 12 shape 2 6 也就是说 我想连接中间维度的所有项目 在这种特殊情况下我可以得到这
  • PyQt5:如何使QThread返回数据到主线程

    I am a PyQt 5 4 1 1初学者 我的Python是3 4 3 这是我尝试遵循的many https mayaposch wordpress com 2011 11 01 how to really truly use qthr
  • Jupyter Notebook:带有小部件的交互式绘图

    我正在尝试生成一个依赖于小部件的交互式绘图 我遇到的问题是 当我使用滑块更改参数时 会在前一个绘图之后完成一个新绘图 而我预计只有一个绘图会根据参数发生变化 Example from ipywidgets import interact i
  • 使用 paramiko 运行 Sudo 命令

    我正在尝试执行sudo使用 python paramiko 在远程计算机上运行命令 我尝试了这段代码 import paramiko ssh paramiko SSHClient ssh set missing host key polic

随机推荐