Python的string.strip()奇怪的行为

时间:2011-05-04 10:29:32

标签: python string strip

我看到一个字符串:

EVENTS: RAID
Volume Set Information 
Volume Set Name : ARC-1120-VOL#00 
Raid Set Name   : Raid Set # 00   
Volume Capacity : 1.0GB
SCSI Ch/Id/Lun  : 00/00/00
Raid Level      : Raid5
Stripe Size     : 64K
Member Disks    : 3
Cache Mode      : Write Back
Tagged Queuing  : Enabled
Volume State    : Degraded

Volume Set Information 
Volume Set Name : ARC-1120-VOL#01 
Raid Set Name   : Raid Set # 00   
Volume Capacity : 5.0GB
SCSI Ch/Id/Lun  : 00/00/01
Raid Level      : Raid5
Stripe Size     : 64K
Member Disks    : 3
Cache Mode      : Write Back
Tagged Queuing  : Enabled
Volume State    : Degraded

当我完成一个string.strip(“EVENTS:RAID \ n”)时,我得到了这个结果:

olume Set Information 
Volume Set Name : ARC-1120-VOL#00 
Raid Set Name   : Raid Set # 00   
Volume Capacity : 1.0GB
SCSI Ch/Id/Lun  : 00/00/00
Raid Level      : Raid5
Stripe Size     : 64K
Member Disks    : 3
Cache Mode      : Write Back
Tagged Queuing  : Enabled
Volume State    : Degraded

Volume Set Information 
Volume Set Name : ARC-1120-VOL#01 
Raid Set Name   : Raid Set # 00   
Volume Capacity : 5.0GB
SCSI Ch/Id/Lun  : 00/00/01
Raid Level      : Raid5
Stripe Size     : 64K
Member Disks    : 3
Cache Mode      : Write Back
Tagged Queuing  : Enabled
Volume State    : Degraded

问题:为什么“音量集信息”的V消失了?

如您所见,我想删除第一行,如果有人知道更好的方法吗? (我知道这里有很多“pythonic”家伙......给我你最好的镜头=)

5 个答案:

答案 0 :(得分:3)

因为strip的参数是要删除的字符串,而你的参数包含“V”。

为什么你传递那个字符串呢?

答案 1 :(得分:2)

您是否阅读过the documentation of strip()

它会删除您提供的任意数量的字符,因此每个.strip("EVENTS: RAID\n"),每E,每V,每E N条, ......直到发现一个角色不在那里!这就是V Volume Set Information失踪的原因。

请尝试replace(string, "EVENTS: RAID\n", "", 1)

答案 2 :(得分:1)

string.strip()从字符串的开头或结尾删除给定字符的所有实例。

尝试一下

的内容
linebreak_pos = string.find("\n")
if linebreak_pos != -1:
    string = string[linebreak_pos:]

或者如果你想要快速和肮脏的东西,

string = "\n".join(string.split("\n")[1:])

答案 3 :(得分:1)

Strip()将删除与其参数字符串中指定的某个字符匹配的所有前导字符。由于'V'是其中之一(在EVENTS中),它会被剥离。

您要做的是更换领先的“EVENTS:RAID \ n”。你可以使用正则表达式。

答案 4 :(得分:0)

行为绝对正确。

strip(chars)应该剁掉'chars'中指定的所有尾随/前导字符。 它不是关于执行string.replace()操作。由于'V'在'chars'中被特定,你也将失去第一个'V'。如果你不相信,请回来查看string.strip()文档。