作者HuangJC (吹笛牧童)
看板Python
标题Re: 字串变数跳脱字元问题
时间Fri Mar 31 12:43:43 2023
※ 引述《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://webptt.com/cn.aspx?n=bbs/Python/M.1680237825.A.08B.html
※ 编辑: HuangJC (116.241.233.114 台湾), 03/31/2023 12:55:45
1F:推 holmes3: 感谢,我的问题就像您说的那样 04/02 03:34
2F:→ kisaraki1976: 抑音号 04/04 20:21
感谢;抑音号竟然也有用在程式里,好像是 db 吧。。
我也很惊讶为什麽要用它
※ 编辑: HuangJC (123.204.157.162 台湾), 04/06/2023 00:59:29