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