Re: 字串變數跳脱字元問題
※ 引述《holmes3 (紫色的偶然)》之銘言:
: 大家好,我是python初學者,
: 在這跟大家請教個問題
: 現有一字串變數
: a=‘’c:\032823"
: 因\032會被轉譯,
: 小弟知道r‘’c:\032823",可防止轉譯,
: 但如果是變數如何加r呢?
: 如r+a這樣。
: -----
: Sent from JPTT on my Samsung SM-G9860.
看不懂你在表達什麼,寫程式千萬要用純文字編輯器
像我用 Mac,若開內建編輯器,支援字體大小甚至顏色,
那也還罷了,只要我不去下字體大小顏色的指令,基本上也能編純文字
可是引號它就會很雞婆的亂改,改到無法執行
" 雙引號
' 單引號
` 這不知要叫什麼,很像單引號,但斜了點
‘’更別說你這個,這是打單引號要框住字串時,雞婆的編輯程式會自動配一左一右 XD
所以這原本是兩個單引號耶!
如果我忽略系統替你亂配,你也不該打兩個單引號來當做一個雙引號
因為在字串裡,單引號雙引號,就是不同
不過我就腦補成你要打這個好了
a= "c:\032823"
這一句的問題是,\032 已經被解譯,才會被存入 a
如果你要做任何還原, 把第一個字,還原成 \032
但上句也等效為
a= 'c:\x1a823'
啊,python 怎麼知道你不是要還原成 \x1a 呢?
資訊已被破壞
會被破壞的資訊,必需一開始就儲存 raw 版
(就好像數位相機拍照可以存 raw image
雖然拍照的當下是 raw image,但如果存入 sd 卡的是轉換過的
之後就無法從轉換過的生回 raw image; raw 必需一開始就儲存
寧可未來再自行轉換)
rawA = r"c:\032823"
a = fn(rawA)
像這樣是比較可能的思維
而 fn 不知有沒有現成的 encoder
但最暴力的 exec, eval 肯定可以
a = eval(f"'{rawA}'")
-------
def fn(raw) -> str:
return eval(f"'{raw}'")
rawA = r"c:\032823"
a = fn(rawA)
print(rawA, a)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 116.241.233.114 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1680237825.A.08B.html
※ 編輯: HuangJC (116.241.233.114 臺灣), 03/31/2023 12:55:45
推
04/02 03:34,
2年前
, 1F
04/02 03:34, 1F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章