数値に関連付けられた名前のフィールドを持つテキストファイルがあります。フィールドは空白行で区切られています。コードは、選択された名前とそれに関連するフィールドを提供する必要があります。テキストファイルを解析中にエラーが発生しました -
1,Hospital_Records
2,Exit
Enter your choice: 1
Enter your first and last name: John Wilson
Name: John Wilson
Days in Hospital: 3
Daily Rate: 400.0
Service Charges: 1000.0
medication_Charges: 5987.22
Total Charges: 8187.22
Traceback (most recent call last):
File "E:/test_file_parse.py", line 63, in <module>
main()
File "E:/test_file_parse.py", line 29, in main
days_in_hospital = int(file.readline())
ValueError: invalid literal for int() with base 10: '\n'
が、私は私のコードおよびテキストファイルを提供しています:ここに私のスタックトレースです
def main():
#create a bool variable to use as a flag
found = False
searchName=''
days_in_hospital=0
daily_rate=0.0
service_charge= 0.0
medication_charges= 0.0
choice=0
total_charges= 0.0
while choice!=2:
print("1,Hospital_Records")
print("2,Exit")
choice= int(input("Enter your choice: "))
if choice==1:
#Get the search value
searchName= input("Enter your first and last name: ")
file= open("c:\\Python34\HospitalRecords.txt", "r")
#Read the first record's name field
record = file.readline()
#Read the rest of the file
while record!='':
days_in_hospital = int(file.readline())
daily_rate = float(file.readline())
service_charge = float(file.readline())
medication_charges = float(file.readline())
total_charges = ((days_in_hospital * daily_rate) +
service_charge + medication_charges)
#strip the newline character from the record
record= record.rstrip('\n')
#determine if this record matches the search value
if record==searchName:
print("Name: " ,searchName)
print("Days in Hospital: " , days_in_hospital)
print("Daily Rate: " , daily_rate)
print("Service Charges: " , service_charge)
print("medication_Charges: " , medication_charges)
print("Total Charges: " ,total_charges)
print()
#set the found flag to True
found = True
elif choice==2:
print("You are successfully exited your program")
else:
print("Invalid entry")
#If the search value was not found in the file
#display a message
if not found:
print("That name was not found in the file.")
file.close()
メイン()ここで
はテキストファイルです:
John Wilson
3
400.00
1000.00
5987.22
Charles Sanders
10
12000.34
2487.77
8040.66
Susan Sarandon
1
300.22
8463.88
12777.33
Mary Muffet
8
4976.55
4050.00
15839.20
また、John Wilsonの最初の名前以外の名前を入力すると、次のエラーが表示されます。
1,Hospital_Records
2,Exit
Enter your choice: 1
Enter your first and last name: Susan Sarandon
Traceback (most recent call last):
File "E:/test_file_parse.py", line 63, in <module>
main()
File "E:/test_file_parse.py", line 29, in main
days_in_hospital = int(file.readline())
ValueError: invalid literal for int() with base 10: '\n'
を多分 '' int型(。file.readline()ストリップ( '\ n')で)してみてください? – Eli
テキストファイルのレコード間に余分な行があるようです。余分な 'file.readline()'を投げて空の行を無視し、それがどのように動作するかを見てください。また、警告の言葉:テキストファイルのファイルパスにエスケープされていないバックスラッシュがあります。 – Kupiakos
Eli、Kupiakos、これらの修正は何も変更しませんでした。まだ同じエラーが発生しています。私は余分な 'file.readline'を投げたときに気付いた。ファイル名の次のレコードである 'Charles Sanders'は、基数10のint()の無効なリテラルの最後に現れた。 'Charles Sanders' – brohjoe