سؤال

عند الكتابة إلى ملف نصي بعض الملفات.أكتب حالات تليها لينيبريك في ملف الإخراج و البعض الآخر لا.أنا لا أريد linebreaks إلا حيث أخبرهم أن تحدث.كود:

    for doc,wc in wordcounts.items(): 
        out.write(doc)             #this works fine, no linebreak
        for word in wordlist: 
            if word in wc: out.write("\t%d" % wc[word]) #linebreaks appear
            else: out.write("\t0")                      #after each of these
        out.write("\n")        #this line had mixed spaces/tabs

ما أنا في عداد المفقودين ؟

التحديث

كان يجب أن آخذ فكرة عن كيفية رمز لصقها في ذلك.لسبب ما كان هناك خليط من أماكن علامات التبويب في السطر الأخير ، تيكستماتي ذلك بصريا ظهرت خارج "كلمة..." حلقة ولكن المترجم كان التعامل معها بوصفها جزءا من تلك الحلقة.تحويل المساحات علامات التبويب حل المشكلة.

شكرا على المدخلات الخاصة بك.

هل كانت مفيدة؟

المحلول

file.write() لا تضيف أي أسطر إذا كانت السلسلة تكتب لا تحتوي على أي \ns.

ولكن القوة السطر لكل كلمة في قائمة الكلمات الخاصة بك باستخدام out.write("\n"), هل هذا ما تريد ؟

    for doc,wc in wordcounts.items(): 
        out.write(doc)             #this works fine, no linebreak
        for word in wordlist: 
            if word in wc: out.write("\t%d" % wc[word]) #linebreaks appear
            else: out.write("\t0")                      #after each of these
            out.write("\n") #<--- NEWLINE ON EACH ITERATION!

ربما كنت بادئة out.write("\n") بعيدا جدا???

نصائح أخرى

يمكنك كتابة خط فواصل بعد كل كلمة:

for word in wordlist:
    ...
    out.write("\n")

هذه فواصل الأسطر كنت ترى أم أن هناك المزيد إضافية منها ؟

قد تحتاج إلى إجراء strip() على كل wc[word].طباعة عنصر واحد من wc هو من المحتمل أن يكون كافيا لتحديد ما إذا كان هناك بالفعل خط فواصل على هذه البنود هذا المجال مما تسبب في هذا السلوك.

إما هذا أو المسافة البادئة على النهائي out.write("\n") لا تفعل ما تريده أن يفعل.

أعتقد أن المسافة البادئة هو الخطأ.

(أيضا أخذت الحرية أن تجعل النظام الخاص بك إذا شرط زائدة رمز أكثر قابلية للقراءة :)

for doc,wc in wordcounts.items()
   out.write(doc)
   for word in wordlist:
     out.write("\t%d" % wc.get(word,0))
   out.write("\n")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top