Das Problem ist, dass Ihre letzte next()
im try
Block die erste Zeile des nächsten Block liest, aber es nicht erfassen, so daß die Leitung verloren geht. Jede Iteration liest 12 Datensätze, nicht 11, sondern nur 11
versuchen, diesen Prozess (es gibt zwei neue Linien und eine geänderte Zeile):
import re
file_removed = open("input_removed.txt")
json_result = open("output_json.json", "w+")
datalist = []
name = None # Added
while True:
data = {}
if name is None: # Added
name = next(file_removed)
name = re.sub("\n", "", name)
data["name"] = name
familyName = next(file_removed)
familyName = re.sub("\n", "", familyName)
data["familyName"] = familyName
wGuideline = next(file_removed)
wGuideline = re.sub("Watering guidelines\s+","", wGuideline)
wGuideline = re.sub("\n", "", wGuideline)
data["water"] = wGuideline
FerLine = next(file_removed)
FerLine = re.sub("Fertilizer suggestions\s+ ","",FerLine)
FerLine = re.sub("\n", "", FerLine)
data["fertilizer"] = FerLine
MistLine = next(file_removed)
MistLine = re.sub("Mist requirements\s+","",MistLine)
MistLine = re.sub("\n", "", MistLine)
data["mist"] = MistLine
LightLine = next(file_removed)
LightLine = re.sub("Light preferences\s+","", LightLine)
LightLine = re.sub("\n", "", LightLine)
data["light"] = LightLine
TempLine = next(file_removed)
TempLine = re.sub("Temperature preference\s+","",TempLine)
TempLine = re.sub("\n", "", TempLine)
data["temperature"] = TempLine
print(TempLine)
phLine = next(file_removed)
phLine = re.sub("pH range\s+", "", phLine)
phLine = re.sub("\n", "", phLine)
data["ph"] = phLine
AcidLine = next(file_removed)
AcidLine = re.sub("Acidity preference\s+", "",TempLine)
AcidLine = re.sub("\n", "", TempLine)
data["acid"] = AcidLine
ToxicLine = next(file_removed)
ToxicLine = re.sub("Toxicity\s+", "",AcidLine)
ToxicLine = re.sub("\n", "", AcidLine)
data["toxic"] = ToxicLine
ClimateLine = next(file_removed)
ClimateLine = re.sub("Climate\s+", "",ClimateLine)
ClimateLine = re.sub("\n", "", ClimateLine)
data["climate"]= ClimateLine
datalist.append(data)
try:
name = next(file_removed) # Changed
except StopIteration:
break;
Es gibt noch weitere Verbesserungen, die dazu gemacht werden könnten Code, aber weitere Änderungen würden das unmittelbare Problem beeinträchtigen.
Err ... könnten Sie ein Beispiel für Ihre Eingabedatei angeben? Es sieht so aus, als ob du eine Menge Arbeit machst, die du nicht haben musst ... –
@cdarke kannst du es mit mehr als einer Eingabe versuchen? Ich kann meine Eingabe hier nicht aus Gründen der Vertraulichkeit posten. –
Mein schlechtes. Beachten Sie, dass es 12 Aufrufe von 'next()' bei jeder Iteration gibt und dass Sie nicht die Zeile erfassen, die vom letzten im 'try' Block gelesen wurde. – cdarke