题目:【这是一个复杂问题的简化】如下是一个字符串列表,提取字符串中第二个数字,并判断是否大于1000,如果是,从列表中删除这一行。
1000\t1002\n
.....【省略】....
代码:
<pre name="code" class="python">#coding: utf-8
oldStr = "1000\t1002\n"
newStr = oldStr
#匹配目标数字左侧字符串
t=newStr.index("\t")
newStr = newStr.lstrip(newStr[0:t])
newStr = newStr.lstrip("\t")
newStr = newStr.rstrip("\n")
if int(newStr)>1000:
print 'ok'
else:
print 'sorry'
#结果:ok
接下来可继续后续删除操作。
易错点1:对字符串进行strip()后,如果不赋值,字符串内容保持不变。
>>> newStr.lstrip("\t")
'1002\n'
>>> newStr.rstrip("\n")
'\t1002'
再举一例:
>>> ss="124"
>>> ss[0]
'1'
>>> ss.lstrip(ss[0])
'24'
>>> ss[0] #ss[0]保持不变
'1'
>>> ss=ss.lstrip(ss[0]) # 赋值之后ss获取新值
>>> ss
'24'
>>> ss[0] #ss[0]随之改变
'2'
易错点2:如果
newStr = newStr.lstrip(newStr[0:t])结果为"
\t1002",改为newStr[0:t+1]
newStr = newStr.lstrip(newStr[0:t+1])
理论上得到1002,事实上是2.原因strip函数用错。
解决注释报错:如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明:#coding: utf-8
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。