转义符插曲


      最近受朋友之托帮忙写个筛选数据的脚本,由于筛选过程涉及不少键盘鼠标模拟操作,以前没了解过这方面内容,查了一下常用做法,最终决定采用vbs脚本语言,以前也没用过,大概扫了一下语法就开干。数据使用txt文本保存的,通常数据之间都是用制表符“\t”或者其他空格什么分割的;也没多想,就用空格分隔试了一下,文件读取按行读取后分割出现了问题,输出没分割开,后来换用“\t”还是不行。

   于是开始考虑是否使用的分隔符部不对,文件中数据的分割使用了其他特殊字符,所以用UE打开十六进制查看到底用的什么分隔符,回车换行0D(回车十六进制代码) 0A(换行符十六进制代码),分割09(制表符的十六进制代码)就是制表符分割的!这个时候就才开始考虑是不是代码本身的问题,查了资料才发现vbs脚本语言没有像其他语言一样使用 \ 作为转义符,而是使用 " 作为转义符,而且只有"" = " 这一个转义,也就是说"n也不会转义成换行,不过还好vbs提供了特殊字符常量,使用起来还是很方便的(下附vbs特殊字符转义)。

 常见      Vb                   说明
-------------------------------------------------------------
\\            "\"                     (反斜杠)
\n           VbCrLf            (换行符,用来表示重起一行)
\t            VbTab             (水平制表符)
\b          Chr(8)              (退格符)
\r           vbCr                 (回车符)
\'            "'"                      (单引号)
\"           ""                       (双引号)



   只能说惯性思维害死人,当初一直认为是文件分割编码的问题,纠结了很久,蓦然回首真相却在灯火阑珊处,是自己惯性的认为\是转义符的问题,没有考虑vbs语言可能有不同的定义,所以钻了半天牛角尖;以此为戒。

   在上网查资料的过程中,还看到了一则有意思的常识,也写下来,警醒自己在考虑任何问题的时候都应该考虑客观环境,并确认前提条件,不要为惯性思维束缚。


     换行符‘\n’和回车符‘\r’区别
     顾名思义,换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符
     '\n' 10 换行(newline)
     '\r' 13 回车(return)
     也可以表示为'\x0a'和'\x0d'.(16进制)

      在windows系统下,回车换行符号是"\r\n".但是在Linux等系统下是没有"\r"符号的。在解析文本或其他格式的文件内容时,常常要碰到判定回车换行的地方,这个时候就要注意既要判定"\r\n"又要判定"\n"。写程序时可能得到一行,将其进行trim掉'\r',这样能得到你所需要的string了。


### Python 转义符及其用法示例 在 Python 中,转义符是通过反斜杠(`\`)来表示一些特殊字符或不可打印字符的方式。以下是常见的转义符及其用法和示例代码。 #### 1. 制表符(`\t`) 制表符用于在字符串中插入一个水平制表位,通常用于对齐文本。 ```python str1 = '网站\t\t域名\t\t\t年龄\t\t价值' str2 = '谷歌\t\www.google.com\t\t40\t\t500000000W' str3 = '百度\t\twww.baidu.com\t\t20\t\t500000W' print(str1) print(str2) print(str3) ``` 上述代码使用了制表符 `\t` 来对齐列数据[^1]。 #### 2. 换行符(`\n`) 换行符用于在字符串中创建一个新的行。 ```python print("Hello\nWorld!") ``` 运行结果为: ``` Hello World! ``` 此示例展示了如何使用换行符 `\n` 将字符串分割成多行[^3]。 #### 3. 反斜杠(`\\`) 如果需要在字符串中显示反斜杠本身,则需要使用双反斜杠 `\\`。 ```python print("This is a backslash: \\") ``` 输出结果为: ``` This is a backslash: \ ``` #### 4. 引号转义(`\"` 和 `\'`) 在字符串中包含引号时,可以使用转义符来避免语法错误。 ```python str1 = 'He said "Don\'t do that"' str2 = "She replied 'You\"re right'" print(str1) print(str2) ``` 此示例展示了如何在单引号字符串中嵌入双引号,以及在双引号字符串中嵌入单引号[^5]。 #### 5. 三引号字符串 三引号字符串(`'''` 或 `"""`)允许直接嵌入引号而无需转义。 ```python str3 = '''包含"双引号"和'单引号'无需转义''' print(str3) ``` 输出结果为: ``` 包含"双引号"和'单引号'无需转义 ``` #### 6. 跨平台换行符 不同操作系统对换行符的处理方式可能不同。例如,Windows 使用 `\r\n` 表示换行,而 Linux 使用 `\n`。为了确保跨平台兼容性,可以使用 `os.linesep` 获取当前系统的换行符。 ```python import os print("Hello" + os.linesep + "World") ``` 此示例展示了如何在跨平台开发中正确处理换行符[^4]。 ### 注意事项 - 不要滥用转义符,尤其是在不需要转义的情况下,可以使用交替引号或三引号[^5]。 - 在 Windows 系统路径中,注意双反斜杠的使用,例如 `C:\\path\\to\\file`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值