最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中原始字符串(r前綴)的作用及用法

 更新時(shí)間:2026年05月11日 09:29:35   作者:IT之一小佬  
本文解釋了在Python中使用原始字符串(r)處理文件路徑的重要性,避免了轉(zhuǎn)義字符沖突的問題,同時(shí),介紹了三種替代寫法,并在正則表達(dá)式中強(qiáng)調(diào)了r前綴的使用,需要的朋友可以參考下

在Python開發(fā)中,尤其是處理文件操作時(shí),你一定見過這樣的代碼:

sourcepath = r"E:\python_code\test\003\data"

這里的路徑字符串前面多了一個(gè)小寫的 r。這個(gè) r 究竟有什么用?為什么不能直接寫成 "E:..."?

簡單來說,這個(gè) r 是原始字符串(Raw String)的“守護(hù)者”。它能幫你避開Python中最大的“坑”之一——轉(zhuǎn)義字符沖突。本文將帶你徹底搞懂它的原理和用法。

一、 核心概念:什么是原始字符串?

在Python中,字符串前的 r 告訴解釋器:“**請將這個(gè)字符串中的所有內(nèi)容都視為普通字符,不要進(jìn)行任何轉(zhuǎn)義處理。”**

要理解這一點(diǎn),我們需要先看看如果沒有 r 會(huì)發(fā)生什么。

二、 為什么需要r**?—— 轉(zhuǎn)義字符的“鍋”**

在標(biāo)準(zhǔn)的Python字符串中,反斜杠 \ 是一個(gè)特殊的轉(zhuǎn)義字符。它用來表示一些無法直接輸入的字符,例如:

  • \n 代表換行符
  • \t 代表制表符
  • " 代表雙引號本身

問題的根源Windows系統(tǒng)的文件路徑也是用反斜杠 \ 作為分隔符的。當(dāng)你寫下這樣的代碼時(shí):

#  錯(cuò)誤示范:沒有加 r
path = "E:\python_code\test\003\data"

Python解釋器在解析這個(gè)字符串時(shí),會(huì)嘗試把 \ 和后面的字母組合起來看是否是特殊字符。雖然 \p、\t(test)、\d(data)在標(biāo)準(zhǔn)Python中可能不會(huì)報(bào)錯(cuò)(會(huì)被當(dāng)作普通字符處理),但如果你的路徑中包含以下字母,就會(huì)引發(fā)嚴(yán)重的語法錯(cuò)誤邏輯錯(cuò)誤

  • \n:Python會(huì)把它當(dāng)成換行符。
  • \t:Python會(huì)把它當(dāng)成制表符(Tab)。
  • \r:Python會(huì)把它當(dāng)成回車符。
  • \U\u:Python會(huì)嘗試將其解析為Unicode編碼,如果后面格式不對,直接報(bào)錯(cuò) SyntaxError: (unicode error)。

報(bào)錯(cuò)案例假設(shè)你的路徑是 C:\Users\Name\Desktop,代碼寫成:

path = "C:\Users\Name\Desktop"

Python看到 \U,會(huì)試圖解析后面的字符為Unicode長整型轉(zhuǎn)義,結(jié)果發(fā)現(xiàn)格式不對,直接拋出異常,程序無法運(yùn)行。

三、 解決方案:**r**的三種替代寫法

為了確保路徑字符串中的 \ 僅僅是一個(gè)普通的分隔符,我們有三種常見的寫法。

方法1:使用原始字符串(加 r**)—— 最推薦**這是最簡潔、最符合Windows用戶習(xí)慣的寫法。你只需要在引號前加一個(gè) r。

#  推薦寫法
sourcepath = r"E:\python_code\test\003\data"
  • 優(yōu)點(diǎn):直接復(fù)制Windows資源管理器的路徑即可,無需修改,可讀性最強(qiáng)。
  • 適用:絕大多數(shù)Windows文件路徑場景。

方法2:使用雙反斜杠 \既然單個(gè) \ 是轉(zhuǎn)義符,那么用兩個(gè) \ 就可以表示一個(gè)普通的反斜杠。第一個(gè) \ 轉(zhuǎn)義了第二個(gè) \。

#  可行寫法
sourcepath = "E:\\python_code\\test\\003\\data"
  • 優(yōu)點(diǎn):這是許多編程語言通用的標(biāo)準(zhǔn)寫法,兼容性極好。
  • 缺點(diǎn):寫起來麻煩,路徑長的時(shí)候看著眼花(“反斜杠地獄”)。

方法3:使用正斜杠 /Python在內(nèi)部處理路徑時(shí),完全兼容Linux風(fēng)格的正斜杠 /,即使在Windows系統(tǒng)上也是如此。

#  可行寫法
sourcepath = "E:/python_code/test/003/data"
  • 優(yōu)點(diǎn):跨平臺兼容性好(Windows和Linux通用)。
  • 缺點(diǎn):不符合Windows用戶的視覺習(xí)慣。

四、 效果對比演示

讓我們通過代碼來看看區(qū)別:

import os

# 1. 普通字符串(假設(shè)路徑包含 \n)
# 這里的 \n 會(huì)被解析為換行符,導(dǎo)致路徑無效
bad_path = "C:\new_folder\test.txt" 
print(f"普通字符串長度: {len(bad_path)}") # 長度變短了,因?yàn)?\n 算1個(gè)字符

# 2. 原始字符串(加 r)
# 這里的 \n 被解析為兩個(gè)字符:反斜杠和字母n
good_path = r"C:\new_folder\test.txt"
print(f"原始字符串長度: {len(good_path)}") # 長度正常

# 驗(yàn)證路徑是否存在(假設(shè)文件存在)
# os.path.exists(good_path) -> True

五、 拓展應(yīng)用:正則表達(dá)式

除了文件路徑,r 前綴在正則表達(dá)式中也是標(biāo)配。

正則表達(dá)式中也有大量的反斜杠(如 \d 匹配數(shù)字,\w 匹配字符)。如果不加 r,你需要寫四個(gè)反斜杠 \\ 才能匹配一個(gè)普通的反斜杠,代碼將變得無法閱讀。

import re

# 推薦寫法:清晰直觀
pattern = r"\d+\.\d+" 

# 不推薦寫法:難以閱讀
pattern = "\\d+\\.\\d+"

六、 總結(jié)

寫法示例評價(jià)
原始字符串 (**r)**r"C:\Path\To\File"最推薦,簡潔不易錯(cuò)
雙反斜杠"C:\Path\To\File"標(biāo)準(zhǔn)但繁瑣
正斜杠"C:/Path/To/File"跨平臺友好
普通字符串"C:\Path\To\File"? 極度危險(xiǎn),容易觸發(fā)轉(zhuǎn)義報(bào)錯(cuò)

專家提示:在編寫Python代碼時(shí),只要涉及到Windows的絕對路徑,養(yǎng)成習(xí)慣直接加 r 是最穩(wěn)妥的選擇。這不僅能避免 SyntaxError,還能讓你的代碼看起來更清爽。

到此這篇關(guān)于Python中原始字符串(r前綴)的作用及用法的文章就介紹到這了,更多相關(guān)Python原始字符串(r前綴)使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python的迭代器,生成器和裝飾器你了解嗎

    python的迭代器,生成器和裝飾器你了解嗎

    這篇文章主要為大家詳細(xì)介紹了python的迭代器,生成器和裝飾器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 淺談Python實(shí)現(xiàn)opencv之圖片色素的數(shù)值運(yùn)算和邏輯運(yùn)算

    淺談Python實(shí)現(xiàn)opencv之圖片色素的數(shù)值運(yùn)算和邏輯運(yùn)算

    今天帶大家來學(xué)習(xí)的是關(guān)于Python的相關(guān)知識,文章圍繞著圖片色素的數(shù)值運(yùn)算和邏輯運(yùn)算展開,文中有非常詳細(xì)的的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • pandas中位數(shù)填充空值的實(shí)現(xiàn)示例

    pandas中位數(shù)填充空值的實(shí)現(xiàn)示例

    中位數(shù)填充是一種簡單而有效的方法,用于填充數(shù)據(jù)集中缺失的值,本文就來介紹一下pandas中位數(shù)填充空值的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • Python的joblib模型固化函數(shù)解析

    Python的joblib模型固化函數(shù)解析

    這篇文章主要介紹了Python的joblib模型固化函數(shù)解析,joblib提供了三個(gè)與對象序列化和模型固化相關(guān)的函數(shù)hash,dump,load,joblib.hash主要是為了提供一個(gè)numpy對象的hash方法,需要的朋友可以參考下
    2023-08-08
  • Python 身份驗(yàn)證和授權(quán)庫使用詳解(python jwt庫)

    Python 身份驗(yàn)證和授權(quán)庫使用詳解(python jwt庫)

    python_jwt是一個(gè)Python庫,用于生成、解析和驗(yàn)證JSON Web Tokens(JWT),它完全符合JWT標(biāo)準(zhǔn)規(guī)范(RFC 7519),并提供了簡單而強(qiáng)大的API,使得用戶可以輕松地在Python應(yīng)用中實(shí)現(xiàn)JWT功能,通過本文的介紹,深入探討了python_jwt庫的功能特性、使用方法以及應(yīng)用場景
    2021-01-01
  • 一文帶你解密Python可迭代對象的排序問題

    一文帶你解密Python可迭代對象的排序問題

    這篇文章主要為大家詳細(xì)介紹一下Python中可迭代對象的排序問題,文中的示例代碼講解詳細(xì),對我們深入了解Python有一定幫助,感興趣的可以了解一下
    2022-07-07
  • 使用python實(shí)現(xiàn)接口的方法

    使用python實(shí)現(xiàn)接口的方法

    接口只是定義了一些方法,而沒有去實(shí)現(xiàn),多用于程序設(shè)計(jì)時(shí),只是設(shè)計(jì)需要有什么樣的功能,但是并沒有實(shí)現(xiàn)任何功能,這些功能需要被另一個(gè)類(B)繼承后,由 類B去實(shí)現(xiàn)其中的某個(gè)功能或全部功能。
    2017-07-07
  • Python學(xué)習(xí)之文件的讀取詳解

    Python學(xué)習(xí)之文件的讀取詳解

    這篇文章主要為大家介紹了Python中如何將文件中的內(nèi)容讀取出去來的方法,文中通過示例進(jìn)行了詳細(xì)講解,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下
    2022-03-03
  • django的聚合函數(shù)和aggregate、annotate方法使用詳解

    django的聚合函數(shù)和aggregate、annotate方法使用詳解

    這篇文章主要介紹了django的聚合函數(shù)和aggregate、annotate方法使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python生成隨機(jī)數(shù)的方法

    Python生成隨機(jī)數(shù)的方法

    這篇文章主要介紹了Python生成隨機(jī)數(shù)的方法,有需要的朋友可以參考一下
    2014-01-01

最新評論

叙永县| 南京市| 德州市| 黄陵县| 西平县| 卫辉市| 古浪县| 马公市| 杭州市| 平遥县| 武陟县| 华宁县| 莱芜市| 三门县| 淮阳县| 祁阳县| 柘荣县| 丰县| 祁东县| 微山县| 万安县| 东港市| 墨竹工卡县| 莱芜市| 绿春县| 文登市| 香港 | 股票| 南溪县| 沙河市| 商河县| 晋江市| 高尔夫| 清流县| 福泉市| 甘孜| 浏阳市| 商洛市| 平和县| 揭东县| 兴仁县|