簡體   English   中英

Python中的String.strip()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM