這個問題在這里已經有了答案: 如何在沒有換行符的情況下讀取檔案? (11 個回答) 昨天關門。
因此,我正在撰寫一個函式,它從檔案中讀取行并創建一個串列,然后通過回圈傳遞該串列以創建一個字典,該字典將每一行作為鍵,然后遞增鍵值。基本上,我唯一的問題是它的列印方式不是我想要的。代碼在這里:
import re
import string
def readInputFile():
print("Reading \"GroceryList.txt\"")
f = open("GroceryList.txt")
itemList = f.readlines()
f.close()
itemDict = { }
for ln in itemList:
i = 0
itemCount = 0
while i < len(itemList):
if ln == itemList[i]:
itemCount = 1
itemList.pop(i)
itemDict[ln] = itemCount
i = 1
for key in itemDict:
print("{}: {}".format(key, itemDict[key]))
無論出于何種原因,它的列印是這樣的:
菠菜
: 5
西蘭花
: 1
... ETC。
而我的意圖是:
菠菜:5
西蘭花:1
... ETC。
字典按預期設定自己,具有正確的鍵和鍵值,它只是以這種方式列印,我不知道為什么?我還是個菜鳥,所以我不確定如何糾正這個問題。
uj5u.com熱心網友回復:
您正在從檔案中讀取每一行 - 這仍然會在值的末尾有換行符。您可以通過呼叫.strip()字串來洗掉空格和新行:
itemDict[ln.strip()] = itemCount
如果目標是計算成分出現在購物清單中的次數,則可以改用下的內置Counter類collections。
from collections import Counter
...
item_count = Counter(itemList)
# item_count will now be a dictionary-like object with the
# line as the key and the number of occurrences as the value.
要從檔案中的每個串列中洗掉換行符,您可以應用strip到中的每個值itemList:
item_count = Counter(map(lambda s: s.strip(), itemList))
item_count然后,您可以以與您已經做的相同的方式列印出計數器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/492688.html
