[英]String.strip() in Python
在学习python时,我遇到了这个代码,它接受一个文本文件,将每一行拆分成一个数组,并将其插入一个自定义字典中,其中数组[0]是键,数组[1]是值:
my_dict = {}
infile = open("file.txt")
for line in infile:
#line = line.strip()
#parts = [p.strip() for p in line.split("\t")]
parts = [p for p in line.split("\t")]
my_dict[parts[0]] = parts[1]
print line
for key in my_dict:
print "key: " + key + "\t" + "value " + my_dict[key]
我在关闭和打开注释行的情况下运行程序,得到了相同的结果。 (当然用它下面的一行替换第二个注释行。)在我看来,做一个strip()是可选的。 留下它是更好的做法吗?
如果您可以注释掉代码并且您的程序仍然有效,那么是的,该代码是可选的。
没有参数的.strip()
(或者作为第一个参数的None
)会删除开头和结尾的所有空格,包括空格,制表符,换行符和回车符。 保留它不会造成任何伤害,并允许您的程序处理插入到文件中的意外额外空格。
例如,通过使用.strip()
,文件中的以下两行将导致相同的最终结果:
foo\tbar \n
foo\tbar\n
我会说留下来。
在这种情况下,您可能会遇到一些差异。 考虑如下行:
"foo\tbar "
在这种情况下,如果你strip
,那么你将得到{"foo":"bar"}
作为字典条目。 如果你不剥离,你会得到{"foo":"bar "}
(注意最后的额外空间)
请注意,如果使用line.split()
而不是line.split('\\t')
,则会在每个空格字符上拆分,并且在自动拆分期间将完成“ strip
”操作。 换一种说法:
line.strip().split()
始终完全相同:
line.split()
但:
line.strip().split(delimiter)
不一定相当于:
line.split(delimiter)
strip
什么都不做,但删除了字符串中的空格。 如果要从字符串的前后移除额外的空白,可以使用strip。
示例字符串可以说明:
In [2]: x = "something \t like \t this"
In [4]: x.split('\t')
Out[4]: ['something ', ' like ', ' this']
即使在使用\\t
分割之后,也会看到第一个和第二个项目中有额外的空格,可以使用代码中的条带删除。
strip
从字符串的开头和结尾删除空格。 如果你想要空格,不要调用strip。
不,最好不要将它们排除在外。
如果没有strip(),则可以使用空键和值:
apples<tab>round, fruity things
oranges<tab>round, fruity things
bananas<tab>
如果没有strip(),香蕉会出现在字典中,但是空字符串作为值。 使用strip(),此代码将抛出异常,因为它会剥离香蕉线的制表符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.