繁体   English   中英

split('\000') 在这个 python 代码中做了什么?

[英]What does split('\000') do in this python code?

drives = win32api.GetLogicalDriveStrings()
drives = drives.split('\000')[:-1]

以上是我被分配到的项目中的一段代码。 第一行执行后,drives 变量如下:

C:\D:\

第二行执行后变成这样:

['C:\\', 'D:\\']

但是 '\000' 到底是什么意思呢? 我以前从未见过。

'\000' 是一个八进制序列。 代码的意图显然是在 NULL 上进行拆分。

如果代码如问题中所述工作,则GetLogicalDriveStrings()返回的实际值为:

"C:\\\000D:\\\000"

当然,如果你print()那个,你会看到:

C:\D:\

win32api.GetLogicalDriveStrings返回由 Null 字符分隔的驱动器字符串,代码点 0。它可以用\x00 (十六进制)或\000 (八进制)在字符串文字中表示。 将其打印到控制台时没有字符/字形。

此外,不要与数字0的字符混淆,即代码点 48(基数 10)或 0x30(十六进制)。

repr返回字符串的表示形式

ord返回字符的 Unicode 代码点。

import win32api

drives = win32api.GetLogicalDriveStrings()
print(repr(drives))
for char in drives:
    print(ord(char), char)

Output:

'C:\\\x00D:\\\x00'
67 C
58 :
92 \
0 
68 D
58 :
92 \
0 

看:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM