Python教程 r 的使用技巧

2023-10-22 07:10:33 字數 4854 閱讀 5510

嗨,大家好!今天,我们将**python中一个重要但经常被忽视的小技巧'r'。

在python中,r是一个前缀,它用于处理原始字符串(raw strings)。原始字符串与普通字符串不同,它们让你在字符串中使用反斜杠符号\而不必担心它们被解释成转义字符。

为什么要使用原始字符串?

原始字符串在处理正则表达式、文件路径、windows路径等需要使用反斜杠的情况下非常有用。当你使用普通字符串时,例如"c:\user\documents",python会将\u解释为一个unicode转义字符,而不是文件路径的一部分。

但如果你使用原始字符串,像这样:r"c:\user\documents",python将字符串视为字面值,不对\进行任何转义。

让我们来看几个实际的例子

1.正则表达式

正则表达式:在正则表达式中,反斜杠\用于转义特殊字符。使用原始字符串,你可以写更简洁的正则表达式,例如:r"\d-\d"

import re

# 使用普通字符串。

pattern = d-\\d" # 匹配格式为"#########"的**号码。

text = local phone number: 027-888888"

match = re.search(pattern, text)

print("普通字符串匹配结果:",match.group() if match else "未找到匹配")

# 使用原始字符串。

pattern_raw = r"\d-\d" # 匹配格式为"#########"的**号码。

match_raw = re.search(pattern_raw, text)

print("原始字符串匹配结果:",match_raw.group() if match_raw else "未找到匹配")

输出。普通字符串匹配结果: 027-888888

原始字符串匹配结果: 027-888888

由于反斜杠 \ 在普通python字符串中也是一个转义字符,因此在正则表达式模式中我们需要写成 "\d" 而不是 "\d"。

然后,我们在文本字符串 text 中搜索这个模式,如果找到匹配,就打印出匹配的结果。

我们使用了原始字符串,即在模式字符串前面加上 r 前缀。这意味着在模式字符串中,反斜杠 \ 不会被解释为转义字符,所以我们只需要写 \d 而不是 "\d",使模式更加清晰和简洁。

使用原始字符串可以减少错误并提高可读性,尤其是在处理复杂的正则表达式时。所以,当你需要在正则表达式中包含反斜杠时,使用原始字符串是一个不错的选择。

在上述**示例中,你会看到两次搜索都会找到匹配,因为文本字符串 text 包含了一个某地的**号码。使用原始字符串使正则表达式模式更加直观和易于理解。

提示

**"import re"是用于导入python的正则表达式库(re)的语句。

如果你想使用正则表达式来进行文本匹配,包括使用re.search() 函数,那么必须导入这个库(re),因为它包含了与正则表达式相关的函数和类。

2.文件路径

文件路径:如果你需要处理文件路径,使用原始字符串可以避免混淆。例如:path = r"c:\user\documents\file.txt"

# 使用普通字符串。

path_normal = c:\\user\\documents\\file.txt"

# 使用原始字符串。

path_raw = r"c:\user\documents\file.txt"

print("普通字符串路径:",path_normal)

print("原始字符串路径:",path_raw)

输出

普通字符串路径: c:\user\documents\file.txt

原始字符串路径: c:\user\documents\file.txt

当编写文件路径时,经常会涉及到反斜杠 \,因为在windows系统中,路径通常使用反斜杠来分隔文件夹和文件。在python字符串中,反斜杠 \ 也被用作转义字符,用于表示特殊字符。这可能会导致一些问题,特别是当你需要在字符串中包含反斜杠时。

r 前缀的主要作用是将一个字符串标记为原始字符串(raw string),这意味着反斜杠 \ 不会被解释为转义字符。这对于处理文件路径非常有用,因为它允许你编写路径而不必担心反斜杠被误解。

# 使用普通字符串。

path_normal = c:\\user\\documents\\file.txt"

在这行**中,path_normal 是一个普通字符串,表示文件路径。在这个字符串中,双反斜杠 \\用于表示单个反斜杠,因为反斜杠是一个转义字符,所以你需要使用两个反斜杠来表示一个。

# 使用原始字符串。

path_raw = r"c:\user\documents\file.txt"

在这行**中,path_raw 是一个原始字符串,它使用 r 前缀。这意味着字符串中的反斜杠 \ 不会被解释为转义字符。因此,你只需写单个反斜杠,而不必使用两个。这样做使文件路径更加清晰和易于阅读。

print("普通字符串路径:",path_normal)

print("原始字符串路径:",path_raw)

这两行**用于打印文件路径。

3.json字符串

json字符串:有时,你需要在字符串中包含特殊字符,比如表示换行。使用原始字符串可以确保这些字符保持原样,例如:json_data = r''。

import json

# 使用普通字符串,包含转义后的换行。

json_data_normal =

# 使用原始字符串,包含转义后的换行。

json_data_raw = r''

parsed_normal = json.loads(json_data_normal)

parsed_raw = json.loads(json_data_raw)

print("普通字符串json解析结果:",parsed_normal)

print("原始字符串json解析结果:",parsed_raw)

# 创建包含实际的换行的 json 数据(使用转义形式)

json_data_actual_newline =

# 输出包含实际的换行的 json 数据。

print("json数据(包含实际的换行):"json_data_actual_newline)

输出

普通字符串json解析结果:

原始字符串json解析结果:

json数据(包含实际的换行):

**解释

在上面的**示例中,我们使用了 python 中的 json 模块来处理 json 数据,并展示了在 json 字符串中 的不进行转义的两种用法:"\以及 r 前缀。

首先,我们定义了两个 json 数据字符串:json_data_normal 和 json_data_raw。

json_data_normal 使用普通字符串,json 对象包含了一个没有转义的 。

json_data_raw 使用原始字符串(r 前缀),json 对象同样包含了一个没有转义的 。

我们使用 json.loads() 函数来解析这两个 json 数据字符串,并将结果分别存储在 parsed_normal 和 parsed_raw 变量中。

我们输出这两个解析结果。

接下来,我们定义了一个新的 json 数据字符串 json_data_actual_newline,这次我们试图在其中包含实际的换行符。

最后,我们输出 json_data_actual_newline,它执行了换行操作。

总结

python中的‘r’前缀是一个强大的工具,让你处理原始字符串时更加轻松,避免了许多常见的转义字符问题。这是每个python开发者都应该知道的小技巧!

希望可以帮助你。如果你喜欢这个教程,请点赞、分享,并订阅我的专栏以获取更多关于python和编程的精彩内容。如果你有任何问题或需要更多解释,请在评论中告诉我。谢谢大家的支持,我们下次再见!

Python教程 zifll的用法

嗨,伙伴们!今天,我们将 python 中的一个非常有用的方法 zfill。你可能会想,这个方法到底是干什么用的?好吧,别担心,我将在本文中为你详细解释。zfill 的功能 首先,zfill 是一个字符串方法,用于在字符串的左侧填充零。这在处理数字时特别有用,特别是当你想要确保数字具有相同的宽度时,...

Python教程 sep参数的用法

嗨,大家好,欢迎来到我的python教学专栏!今天,我将带你深入 python中一个小而强大的工具 sep参数。这是一个能让你更好地格式化输出的小技巧,让你的 更清晰,更易读。sep参数的功能 首先,让我解释一下,sep参数是在python的print 函数中使用的。这个参数允许你定义多个值之间的分...

Python的pip安装教程 从安装到常用命令一网打尽

在python编程中,pip是python的包管理工具,用于安装和管理第三方python包。掌握pip的安装和使用技巧对于python开发者来说至关重要。百万创作者计划 基本文将详细介绍在不同操作系统上安装python的pip以及常用pip命令的使用技巧和注意事项,并通过具体案例 进行演示。安装pi...