标签: rawstring

Python原始文字字符串

str = r'c:\path\to\folder\'   # my comment
Run Code Online (Sandbox Code Playgroud)
  • IDE:Eclipse
  • python2.6的

当字符串中的最后一个字符是反斜杠时,它似乎会转义最后一个单引号并将我的注释视为字符串的一部分.但原始字符串应该忽略所有转义字符,对吧?可能有什么不对?谢谢.

python string rawstring

13
推荐指数
2
解决办法
3万
查看次数

如何在Python中获取字符串的原始表示?

我正在创建一个严重依赖正则表达式的类.

让我们说我的课看起来像这样:

class Example:
    def __init__(self, regex):
        self.regex = regex

    def __repr__(self):
        return 'Example({})'.format(repr(self.regex.pattern))
Run Code Online (Sandbox Code Playgroud)

让我们说我像这样使用它:

import re

example = Example(re.compile(r'\d+'))
Run Code Online (Sandbox Code Playgroud)

如果我这样做repr(example),我会'Example('\\\\d+')',但我想要'Example(r'\\d+')'.考虑到打印时的额外反斜杠,它显示正确.我想我可以实现它返回"r'{}'".format(regex.pattern),但这并不适合我.万一Python软件基金会有一天会改变指定原始字符串文字的方式,我的代码就不会反映出来.不过,这是假设的.我主要担心的是这是否一直有效.不过,我无法想到一个优势的边缘情况.有更正式的方法吗?

编辑:格式规范迷你语言,printf样式字符串格式指南string模块似乎没有出现任何内容.

python rawstring python-3.x

12
推荐指数
1
解决办法
3140
查看次数

为什么原始字符串文字的分隔符必须低于16个字符?

以下程序无法编译:

#include <iostream>

int main() {
    std::cout << R"RAW_STRING_LITERAL(
        hello
        world
        )RAW_STRING_LITERAL";
}
Run Code Online (Sandbox Code Playgroud)

错误: raw string delimiter longer than 16 characters.

为什么对原始字符串分隔符施加限制长度?

c++ string-literals rawstring c++14 c++17

11
推荐指数
1
解决办法
1031
查看次数

在Python Raw字符串的上下文中

我的Python版本是:

~$ python --version  
Python 2.6.6
Run Code Online (Sandbox Code Playgroud)

我尝试在Python中使用(我想要显示所有内容):

1: \用作转义序列

>>> str('Let\'s Python')       
"Let's Python"
Run Code Online (Sandbox Code Playgroud)

2: \用作转义序列

>>> 'Let\'s Python'             
"Let's Python"
Run Code Online (Sandbox Code Playgroud)

3:str()打印为值而不是类型

>>> print 'Let\'s Python'       
Let's Python
Run Code Online (Sandbox Code Playgroud)

4:它的Python是一个原始字符串

>>> repr('Let\'s Python')      
'"Let\'s Python"'
Run Code Online (Sandbox Code Playgroud)

[ 问题 ]

5:Python原始字符串

>>> print r'Let\'s Python'    
Let\'s Python
Run Code Online (Sandbox Code Playgroud)

6:这个,我不明白以下几点:

>>> r'Let\'s Python'            
"Let\\'s Python"

>>> r'\\'
'\\\\'
Run Code Online (Sandbox Code Playgroud)

为什么\\?为什么输出56不同?
r 并且repr()一样不一样?
另请说明内部表示,string 并且raw strings相同或不同.

python string rawstring

10
推荐指数
1
解决办法
1万
查看次数

如何在python中从字符串变量创建原始字符串?

您可以通过以下方式从字符串创建原始字符串

test_file=open(r'c:\Python27\test.txt','r')
Run Code Online (Sandbox Code Playgroud)

如何从字符串变量创建原始变量,例如

path = 'c:\Python27\test.txt'

test_file=open(rpath,'r')
Run Code Online (Sandbox Code Playgroud)

因为我有一个文件路径:

file_path = "C:\Users\b_zz\Desktop\my_file"
Run Code Online (Sandbox Code Playgroud)

当我做:

data_list = open(os.path.expandvars(file_path),"r").readlines()
Run Code Online (Sandbox Code Playgroud)

我明白了:

Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    scheduled_data_list = open(os.path.expandvars(file_path),"r").readlines()
IOError: [Errno 22] invalid mode ('r') or filename: 'C:\\Users\x08_zz\\Desktop\\my_file'
Run Code Online (Sandbox Code Playgroud)

python string rawstring

9
推荐指数
2
解决办法
1万
查看次数

为什么我不能用反斜杠结束原始字符串?

我在这里很困惑,即使原始字符串转换为每个\,\\\最后它出现时会引发错误.

>>> r'so\m\e \te\xt'
'so\\m\\e \\te\\xt'

>>> r'so\m\e \te\xt\'
SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)

更新:

现在也在Python常见问题解答中介绍:为什么原始字符串(r-strings)不能以反斜杠结尾?

python string rawstring

8
推荐指数
3
解决办法
3424
查看次数

如何在 Python 中“原始文本”变量?

我正在打开一本工作簿openpyxl

wb = load_workbook(r'seven.xlsx', data_only=True)
Run Code Online (Sandbox Code Playgroud)

电子表格的名称并不总是事先知道,所以我需要重写这个硬编码以允许一个变量,同时仍然保持r?

如果我的变量名是 sheet,那么:

wb = load_workbook(sheet, data_only=True)
Run Code Online (Sandbox Code Playgroud)

将省略r.

显然我不能这样做:

wb = load_workbook(r'sheet', data_only=True)
Run Code Online (Sandbox Code Playgroud)

我们如何实现 r 到变量的前置/我们如何将 vriable 包装在其中r''

python string rawstring python-2.7

8
推荐指数
2
解决办法
9736
查看次数

Python Regex转义运算符\替换和原始字符串

我不理解python正则表达式中scape运算符\的功能以及原始字符串的r'的逻辑。一些帮助表示赞赏。

码:

import re
text=' esto  .es  10  . er - 12 .23 with [  and.Other ] here is more ; puntuation'
print('text0=',text)
text1 = re.sub(r'(\s+)([;:\.\-])', r'\2', text)
text2 = re.sub(r'\s+\.', '\.', text)
text3 = re.sub(r'\s+\.', r'\.', text)
print('text1=',text1)
print('text2=',text2)
print('text3=',text3)
Run Code Online (Sandbox Code Playgroud)

该理论说:反斜杠字符('\')表示特殊形式或允许使用特殊字符而无需调用特殊含义。

就此问题末尾提供的链接而言,r'表示原始字符串,即符号没有特殊含义,它保持不变。

所以在上面的正则表达式中,我希望text2和text3是不同的,因为替换文本是'。'。在文本2中,即句点,而(原则上)文本3中的替代文本为r'。这是一个原始字符串,即应显示的字符串,反斜杠和句点。但它们的结果相同:

结果是:

text0=  esto  .es  10  . er - 12 .23 with [  and.Other ] here is more ; puntuation
text1=  esto.es  10. er- 12.23 with [  and.Other ] here is more; puntuation
text2=  esto\.es  10\. er …
Run Code Online (Sandbox Code Playgroud)

python regex substitution backslash rawstring

8
推荐指数
1
解决办法
380
查看次数

如何从Vim中的语法高亮中排除C++原始字符串文字?

老实说,原始字符串文字是C++语言的一个很好的补充.但是(正如预期的那样)编辑们很难正确地展示这些文字.

我正在使用Vim 7.4和开箱即用的原始字符串文字完全打破语法高亮.例如在

char const txt[] = R"(printf(")";
Run Code Online (Sandbox Code Playgroud)

第二个'('在vim中突出显示为红色.

就像是

char const txt2[] = R"(  "{{"  )";
Run Code Online (Sandbox Code Playgroud)

打破花括号的突出显示和基于语法的自动识别 - 依此类推.

首先,我很乐意让Vim忽略语法高亮之间R"(和之间的所有)"内容.

但请注意,原始字符串文字是灵活的 - 在第一个/最后一个双引号/括号对之间允许任意匹配字符串,例如

R"abcd()")")abcd"
Run Code Online (Sandbox Code Playgroud)

也是一个有效的原始字符串文字编码

)")"

另请参阅cppreference链接以获取语法的一般定义.

因此,我的问题是如何配置Vim,以便正确识别C++原始字符串文字.

Vim似乎已经包含了一些正确的synatx功能,突出了嵌入在宿主语言中的语言片段(例如,对于编译器 - 编译器源文件).也许它们也可以用于原始字符串文字案例?

c++ vim rawstring c++11 vim-syntax-highlighting

7
推荐指数
2
解决办法
1236
查看次数

如何在 Python 中正确编写原始多行字符串?

  1. 我知道您可以通过以下几种方式创建多行字符串:

三重行情

'''
This is a 
multi-line
string.
'''
Run Code Online (Sandbox Code Playgroud)

串联

('this is '
'a string')
Run Code Online (Sandbox Code Playgroud)

逃跑

'This is'\
'a string'
Run Code Online (Sandbox Code Playgroud)
  1. 我也知道在字符串前面加上前缀r会使它成为原始字符串,对文件路径很有用。

    r'C:\Path\To\File'
    
    Run Code Online (Sandbox Code Playgroud)

但是,我有一个很长的文件路径,它跨越多行并且需要是一个原始字符串。我该怎么做呢?

这有效:

In [1]: (r'a\b'
   ...: '\c\d')
Out[1]: 'a\\b\\c\\d'
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,这不会:

In [4]:  (r'on\e'
   ...: '\tw\o')
Out[4]: 'on\\e\tw\\o'
Run Code Online (Sandbox Code Playgroud)

为什么"t"只有一个反斜杠?

python string multiline rawstring

7
推荐指数
1
解决办法
1万
查看次数