وقمع لينيبريك على الملف.الكتابة
-
22-07-2019 - |
سؤال
عند الكتابة إلى ملف نصي بعض الملفات.أكتب حالات تليها لينيبريك في ملف الإخراج و البعض الآخر لا.أنا لا أريد 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()
لا تضيف أي أسطر إذا كانت السلسلة تكتب لا تحتوي على أي \n
s.
ولكن القوة السطر لكل كلمة في قائمة الكلمات الخاصة بك باستخدام 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")