简体   繁体   中英

Python print incomplete data

I have the following data in raw_data.txt

id=001;name=Johan Strauss;address=58 Jalan Jelutong, 11600 Pulau Pinang, Malaysia;gender=male
id=002;name=Jennifer Teng;address=Q-2-4,Desa Indah, Lorong Minyak, 13000 Kedah, Malaysia;gender=female

I ran the following code:

f = open('raw_data.txt', 'r')
for x in f:
x = x.replace("id","Student",)
x = x.replace("name","Name")
x = x.replace("address","Home Number")
x = x.replace("gender","Gender")
x = x.replace(";","\n")
print (x)

g = open('formatted.txt','a')
g.write(x)

This is the output I got in formatted.txt

Student=002
Name=Jennifer Teng
Home Number=Q-2-4,Desa Indah, Lorong Minyak, 13000 Kedah, Malaysia
Gender=female

I lost student 001 data. What is wrong with my code?

Problem: you are writing to file in the end only once but processing more student data in the for loop before. The x variable only stores the final value and writes the student 002 data only.

with open('data.txt', 'r') as f: # reading all data line by line from the raw_data.txt
    data = f.readlines()
    
with open('formatted.txt', 'w') as f: # writing data to new file student by student
    for student in data:
        student = student.strip().replace("id","Student").replace("name","Name").replace("address","Home Number").replace("gender","Gender").replace(";","\n")
        f.write(student)
        print(student)

File output screenshot

Remember to close the file that you opened. Your code has an indentation problem that the for loop iterates line by line. The corrected code can be corrected as follows:

f = open('raw_data.txt', 'r')
y=''
for x in f:
    x = x.replace("id","Student")
    x = x.replace("name","Name")
    x = x.replace("address","Home Number")
    x = x.replace("gender","Gender")
    x = x.replace(";","\n")
    y=y+x #Used to store the newly formated text of each line
print(y)
f.close()
g = open('formatted.txt','a')
g.write(y) #Write the updated information to the file
g.close()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM