我將解釋我的代碼項目驗證,並設置格式化
您輸入文件名稱和項目名稱的行爲。
它會在列表中顯示物料的名稱和數量。
第一個問題:其實,我想讓它顯示列表中的第二項,並告訴它是重複的。目前,如果我刪除列表(集(),我將分別獲得2個香蕉輸出相同的字符串。.txt文件的
例如我進口。的
bananes: 18
pommes: 23
bananes: 13
例子txt文件我進口輸入的
pommes : 54
: 18
banane:
oranges : 30
例如:
item.py data10.txt bananes
需要輸出的
例如:
La ligne banane : 13 est un doublon.
輸出我得到:
La ligne ['1', 's', ' ', 'e', ',', "'", '8', 'n', ':', 'b', '2', 'a'] est un doublon.
問題二:如果我寫的任何其它的字比是在列表中的單詞也能正常工作。但實際上,如果我寫出單詞的幾個首字母,它仍然會完全顯示該行。輸入
例如:
pomm: 0
輸出我得到:需要輸出的
item.py data10.txt pomm
例如
pomme: 30
這裏是我的代碼,這樣你可以有一個想法是什麼我這樣做:
import sys
def ligne(texte):
try:
with open(texte) as ouvrir:
lecture = ouvrir.readlines()
words = [" : ".join([x.strip() for x in line.split(":")]) for line in lecture]
words = [x for x in words if len(x) > 1]
return words
except IOError:
print("Le fichier", texte, "n'existe pas.")
sys.exit()
def recherche(essaie):
while True:
if len(essaie) > 3:
print("Deux arguments sont attendus, le nom du fichier d'inventaire et l'item")
sys.exit()
elif len(essaie) < 3:
print("Il faut préciser le nom du fichier et de l'item.")
sys.exit()
else:
entree = essaie[1]
item = essaie[2]
choix = str(entree)
texte = choix.strip("[']")
resultat = [s for s in ligne(texte) if item in s]
resultat2 = str(resultat)
longueur = len(resultat)
resultat3 = resultat2.strip("[']")
resultat4 = list(set(resultat3))
if item in str(ligne(texte)):
if longueur > 1:
print("La ligne", resultat4, "est un doublon.")
sys.exit()
else:
print(resultat3)
sys.exit()
else:
print(item, ": 0")
sys.exit()
if __name__ == "__main__":
recherche(sys.argv)
我已經嘗試了很多事情來嘗試解決這些問題而沒有成功 –
str(ligne(texte))中的item中的每個項目都是由'ligne()返回的列表表示的單個字符。 ',這不是你想要的。 'resultat4 = list(set(resultat3))'有一個類似的問題,因爲'resultat3'是一個字符串,所以從中創建一個集合會導致字符串中的字符集合,然後將其轉換爲您所在的列表看到被打印出來。我想重要的一點是,在Python中,字符串是序列,是可迭代的,因此可以與列表混淆。 – martineau
我不知道如何將您的建議應用於我的代碼我很抱歉 –