EDIT:この問題は解決されました。私は例を必要とする将来の人のためにここに残しておきたいと思う。辞書にオブジェクトのリストを追加する
このコードでは、入力ファイルを取り込んで解析し、ファイルをクラスに渡し、オブジェクトを辞書に格納して、指定された形式でオブジェクトを書き出します。何か質問がある?私はそれらに答えてうれしいです!ここで
は私のコードです:ここでは
#C:\Python27\python.exe Animals(1).py
inp = open("C:\Users\curnutte\Desktop\Assignment\Python Scripts\Python example\Classes\ClassTutorialInput.txt", "r")
outp = open("C:\Users\curnutte\Desktop\Assignment\Python Scripts\Python example\Classes\ClassTutorialOutput.txt", "w")
aniList = []
for line in inp.readlines():
if line == '\n':
line = "nothing"
line = line.strip() #removes '\n'
if line != '%% ================= %%': #grabs all pertinent information
aniList.append(line) #condenses lines to one line
print(aniList)
class Animals(): #creates the Animals class
def __init__(self, species, features, diet, drinks, threats):
self.species = species
self.features = features
self.diet = diet
self.drinks = drinks
self.threats = threats
my_animals=[]
counter = 0
for item in aniList: #iterates through the input file
counter += 1
if counter == 1:
species = item
continue
if counter == 2:
features = item
continue
if counter == 3:
diet = item
continue
if counter == 4:
drinks = item
continue
if counter == 5:
threats = item
my_animals.append(Animals(species, features, diet, drinks, threats))
counter = 0
continue
animal_dict = {}
for index in my_animals:
animal_dict[index.species] = (index)
print (animal_dict)
oldLook = index.features.split(",")
newLook = index.features
if len(oldLook) == 2:
newLook = oldLook[0].strip() + ' and ' + oldLook[1].strip()
if len(oldLook) > 2:
newLook = oldLook[:-1]
newLook = ",".join(newLook)
newLook = newLook + ' and ' + oldLook[-1].strip()
index.features = newLook
oldDiet = index.diet.split(",")
newDiet = index.diet
if len(oldDiet) == 2:
newDiet = oldDiet[0].strip() + ' and ' + oldDiet[1].strip()
if len(oldDiet) > 2:
newDiet = oldDiet[:-1]
newDiet = ",".join(newDiet)
newDiet = newDiet + ' and ' + oldDiet[-1].strip()
index.diet = newDiet
oldPred = index.threats.split(",")
newPred = index.threats
if len(oldPred) == 2:
newPred = oldPred[0].strip() + ' and ' + oldPred[1].strip()
if len(oldPred) > 2:
newPred = oldPred[:-1]
newPred = ",".join(newPred)
newPred = newPred + ' and ' + oldPred[-1].strip()
index.threats = newPred
outp.write("A %s has %s, eats %s, drinks %s, and is eaten by %s.\n" % (index.species, index.features, index.diet, index.drinks, index.threats))
inp.close()
outp.close()
は「ClassTutorialInput.txt」です:
deer
fur, antlers, a peaceful disposition
grass, leaves, roots
water
wolves, bear, mountain lions
%% ================= %%
fish
scales, a clueless lifestyle
bugs
water
sharks, humans
%% ================= %%
lion
fur, manes, a blood-thirst
antelope, humans
water
%% ================= %%
human
hair, skin
vegetables, meat
water
%% ================= %%
印刷文で余分な括弧を削除してみます。 (Bambi.species、Bambi.features、Bambi.features、Bambi.features、Bambi.threats) 'を' print(Bambi.species、Bambi.features、Bambi.threats) 'に変更します。 –
それはクリーンなものをアップしますちょっと!しかし、どうやって入力ファイルを3つの文字列として書くことができますか? – NewAtThis