जब मैं .format() का उपयोग करके फ़ाइल में जानकारी लिखने का प्रयास करता हूं तो मुझे समस्या का सामना करना पड़ रहा है।

मैं write() पाठ की कोशिश कर रहा हूं जिसे पाठ फ़ाइल से दूसरी फ़ाइल में पढ़ा गया है और फिर प्रत्येक पंक्ति के बारे में जानकारी लिखता है:

  • {0} - लाइनों की संख्या

  • {1} - रेखा में कितने स्थान चिह्न हैं

  • {2} - रेखा में कुल कितने प्रतीक हैं

def Spausdinti_Faile(duom, tarpai_kiek, simboliai_kiek):
    with open("rez.txt", "w") as fout:

        i = 0
        for i in range(len(duom)):
            fout.write(duom[i])

        print(tarpai_kiek, simboliai_kiek)
        i = 0
        for i in range(len(duom)):
            fout.write("{0} eilutė turi {1} tarpų simbolių ir {2} 
            simbolių.".format(str(i + 1), str(tarpai_kiek[i]), 
            str(simboliai_kiek[i])))

मुझे यह त्रुटि मिलती है:

enter image description here

0
Mindaugas Dovydaitis 19 नवम्बर 2020, 21:19

2 जवाब

सबसे बढ़िया उत्तर

चूंकि आप विंडोज पर हैं, फाइलों के लिए डिफॉल्ट कैरेक्टर एन्कोडिंग है... कुछ सीमित।

आपकी भाषा के कुछ वर्णों को उस वर्ण एन्कोडिंग में प्रदर्शित नहीं किया जा सकता है, इसलिए आपको उस प्रभाव में एक त्रुटि मिलती है।

UTF-8 एन्कोडिंग के साथ फ़ाइल खोलें; यह किसी भी चरित्र का प्रतिनिधित्व कर सकता है:

with open("rez.txt", "w", encoding="UTF-8") as fout:

आप PYTHONUTF8=1पर्यावरण चर भी सेट कर सकते हैं विंडोज़ पर यूटीएफ -8 के लिए पाइथन डिफ़ॉल्ट होने के लिए - यह पहले से ही अन्य प्लेटफॉर्म पर डिफ़ॉल्ट है।

0
AKX 19 नवम्बर 2020, 21:23

@ AKX के अच्छे उत्तर के साथ, आप अपने कोड को बहुत सरल बना सकते हैं:

def Spausdinti_Faile(duom, tarpai_kiek, simboliai_kiek):
    with open("rez.txt", "w", encoding="UTF-8") as fout:
        fout.write(''.join(duom))
        print(tarpai_kiek, simboliai_kiek)
        for i, v in enumerate(duom):
            fout.write(f"{i + 1} eilutė turi {tarpai_kiek[i]} tarpų simbolių ir {simboliai_kiek[i]} simbolių.")

अगर duom में जरूरी नहीं कि केवल तार हों, तो fout.write(''.join(duom)) को fout.write(''.join(map(str, duom))) में बदलें (इसे इंगित करने के लिए AKX का धन्यवाद)

-1
Ann Zen 19 नवम्बर 2020, 21:55