华南俳烁实业有限公司

python

當前位置:中華考試網(wǎng) >> python >> python編程基礎 >> 文章內(nèi)容

python反斜杠怎么不轉(zhuǎn)義

來源:中華考試網(wǎng)  [2020年9月28日]  【

  python本身使用 \ 來轉(zhuǎn)義一些特殊字符,比如在字符串中加入引號的時候   

  s = 'i\'m superman'

  print(s)    # i'm superman

  為了防止和字符串本身的引號沖突,使用 \ 來轉(zhuǎn)義,一般情況下這個也不會引起什么問題,但是當你要使用 \ 來轉(zhuǎn)義 \ 的時候,就比較混亂了,比如我們想要輸出一個 \ ,得寫兩個 \ ,否則會報語法錯誤,因為 \ 把后面的引號給轉(zhuǎn)義了,必須使用 \。

python學習課程預約提醒

  • 地區(qū):
  • 姓名:
  • 手機:

  # 錯誤寫法

  # print '\'

  # 正確寫法

  print('\\')     # \

  # 原生字符串

  print(r'\\')    # \\

  將 \ 轉(zhuǎn)義一下使其不具備轉(zhuǎn)義功能,才可以正確輸出,當使用原生字符串的時候,輸出顯示了兩個 \ ,看起來好像是寫幾個輸出幾個的樣子,如果這樣想的話,你可以試一下,看能不能輸出奇數(shù)個 \。

  python的原生字符串不能以反斜杠結(jié)尾的問題

  Python的原生字符串(raw string)是個很有用的東西,可以少寫很多反斜線(轉(zhuǎn)義符號)。

  不過它有個著名的bug,就是不能以反斜線結(jié)尾,這讓人很無語。首先要澄清的是不是不能以反斜線結(jié)尾,而是不能以奇數(shù)個反斜線結(jié)尾。

  其次,這個bug的原因是一些處理器(例如主要的正則表達式引擎)希望進行它們自己的反斜線轉(zhuǎn)義處理,而這些處理器不允許字符串以未匹配的反斜線結(jié)尾。

  最后,解決辦法就是把反斜線放在另一個字符串里,Python會自動進行合并:

  dir = r"\this\is\my\dos\dir" "\\"

  雖然原生字符串不是很完美,但是它已經(jīng)可以幫我們解決很大一部分的問題了。比如當你想匹配"\"的時候,原生字符串可以讓你至少少寫一半的\,即節(jié)省代碼量,又增加了可讀性。

  import re

  _string = '\\\\'

  print(_string)  # \\

   # 字符串

  for i in re.findall('\\\\', _string):

    print(i)    

    # \

    # \

  # 原生字符串

  for i in re.findall(r'\\', _string):

    print(i)    

    # \

    # \

責編:hym
  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學歷考試
临邑县| 玛多县| 赫章县| 扶绥县| 临沭县| 嘉祥县| 图片| 蓬溪县| 准格尔旗| 富民县| 无棣县| 华阴市| 武义县| 永顺县| 武邑县| 潜山县| 綦江县| 扎兰屯市| 宿州市| 巴塘县| 沐川县| 沛县| 延长县| 会泽县| 镇巴县| 思茅市| 永善县| 乡城县| 鹿邑县| 厦门市| 和顺县| 彰化市| 赣州市| 育儿| 正安县| 友谊县| 五指山市| 修水县| 九龙县| 稻城县| 大埔县|