Python中的String.strip()

2024-04-26 10:25:11 发布

您现在位置: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()是可选的。把它留在里面是更好的做法吗?


Tags: key代码infor字典myline数组
3条回答

strip只做,删除字符串中的空白。如果要删除字符串前后的额外空白,可以使用strip。

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

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

请看,即使使用\t拆分后,第一项和第二项中仍有多余的空格,可以在代码中使用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)

相关问题 更多 >