Python中的String.strip()

时间:2012-10-22 14:37:21

标签: python string strip

在学习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()是可选的。留下它是更好的做法吗?

5 个答案:

答案 0 :(得分:62)

如果您可以注释掉代码并且您的程序仍然有效,那么是的,该代码是可选的。

没有参数的

.strip()(或None作为第一个参数)在开始和结束时删除所有空格,包括空格,制表符,换行符和回车符。保留它不会造成任何伤害,并允许您的程序处理插入到文件中的意外额外空格。

例如,通过使用.strip(),文件中的以下两行将导致相同的最终结果:

 foo\tbar \n
foo\tbar\n

我会说留下来。

答案 1 :(得分:13)

在这种情况下,您可能会遇到一些差异。考虑一下这样的一行:

"foo\tbar "

在这种情况下,如果您strip,那么您将获得{"foo":"bar"}作为词典条目。如果你不剥离,你会得到{"foo":"bar "}(注意最后的额外空格)

请注意,如果您使用line.split()代替line.split('\t'),则会在每个空格字符上拆分,并且在自动拆分期间将完成“strip ing”。换句话说:

line.strip().split()

总是

相同
line.split()

但:

line.strip().split(delimiter)

不一定等同于:

line.split(delimiter)

答案 2 :(得分:7)

strip什么都不做,但删除了字符串中的空格。如果要从字符串的前后移除额外的空白,可以使用strip。

示例字符串可以说明这一点:

In [2]: x = "something \t like     \t this"
In [4]: x.split('\t')
Out[4]: ['something ', ' like     ', ' this']

即使在使用\t分割后,也会看到第一项和第二项中有额外的空格,可以使用代码中的条带删除。

答案 3 :(得分:0)

strip从字符串的开头和结尾删除空格。如果你想要空格,不要调用strip。

答案 4 :(得分:0)

不,最好将它们排除在外。

如果没有strip(),则可以使用空键和值:

apples<tab>round, fruity things
oranges<tab>round, fruity things
bananas<tab>

如果没有strip(),香蕉会出现在字典中,但是空字符串作为值。使用strip(),此代码将抛出异常,因为它会剥离香蕉线的制表符。