Mọi người cho mình hỏi,mình có 1 doan code như thế này. Trong file của user nhập vào có dang ( 'a' :1,'b':2 ...), giờ mình muốn nó in mấy cái đó ra file example.txt thành ( a 1, b 2(xuống dong)). Nhưng cái function ko chạy được, làm sao để fix vậy mn.
def nice_printing(file):
infile=open(file,'r')
outfile=open('example.txt','w')
items=file.items()
for keys,values in file:
print keys,values
infile.close()
outfile.close()
Tạo function để in trong python
có ai biết cách để fix không?
- Dòng thứ 3 bạn có lỗi cú pháp. Dấu
(
phải ở trước dấu'
. -
file
là từ khóa của python, bạn đặt tên biến khác đi nhé. - Khi đọc file thì dùng hàm
read()
hoặcreadlines()
để đọc. Dữ liệu trả về làstring
(vớiread()
) hoặc list (vớireadlines()
). Chứ không phải kiểudict
để bạn sử dụng luôn hàmitems()
như trên.
def nice_printing(a_string):
infile=open(a_string,'r')
outfile=open('acb.txt','w')
items=a_string.readlines()
for keys,values in items:
print keys,values
infile.close()
outfile.close()
Mình sửa lại khi chay nó báo lỗi str object has no attribute readlines là sao?
infile.readlines mới đúng
Sửa cả vòng lặp for nữa nhé. Vì mỗi dòng là 1 str ko phải dict nên ko có key, value. Bạn có thể dùng line.split(': ')
for line in items:
key = line.split(': ')[0]
value = line.split(': ')[1]
print(key, value)
xin lỗi mình ghi đề sai, file cua user có dạng là {‘a’:1,‘b’:2} chứ không phải là ngoặc (), vậy thì phải sửa ntn vậy?
Bạn cứ dùng print
để biết giá trị các biến tại các thời điểm nhé. Đó là 1 cách debug. Rồi làm từng bước một.
Và lần sau bạn post đầy đủ code, thông báo lỗi… cho mọi người dễ sửa. Sau khi mọi người sửa, bạn so sánh toàn bộ code được sửa và code của bạn thì sẽ rút kinh nghiệm được. Đừng hỏi ngắt quãng như này.
Tham khảo link: convert str to dict
def nice_printing(a_string):
infile=open(a_string,'r')
outfile=open('acb.txt','w')
item=infile.readlines()
for line in item:
key=line.split(': ')[0]
value=line.split(': ')[1]
print (key,value)
infile.close()
outfile.close()
đây là code sau khi sửa lại, khi nhập file của user có {‘a’:1,‘b’:2} thÌ nó báo lỗi list index out of range là sao vậy?
Thông báo lỗi đầy đủ là như này:
D:\HTL\Desktop>python test.py
Traceback (most recent call last):
File "test.py", line 14, in <module>
nice_printing('text.txt')
File "test.py", line 8, in nice_printing
value = line.split(': ')[1]
IndexError: list index out of range
Bạn đã đọc link mình gửi và thử áp dụng nó chưa?
Thôi để mình sửa luôn hộ nhé.
Vì file của bạn chỉ có 1 dòng nên có thể dùng read()
outfile
chưa dùng nên mình bỏ đi
import ast
def nice_printing(a_string):
infile = open(a_string, 'r')
data = ast.literal_eval(infile.read())
for key, value in data.items():
print(key, value)
infile.close()
nice_printing('text.txt')
Nội dung file text.txt
:
{'a':1,'b':2}
Kết quả:
D:\HTL\Desktop>python test.py
a 1
b 2