كتابة نص محدد الفضاء الأبيض ليكون قابلاً للقراءة في بيثون
-
02-10-2019 - |
سؤال
لدي قائمة بالقوائم التي تبدو مثل هذا:
data = [['seq1', 'ACTAGACCCTAG'],
['sequence287653', 'ACTAGNACTGGG'],
['s9', 'ACTAGAAACTAG']]
أكتب المعلومات إلى ملف مثل هذا:
for i in data:
for j in i:
file.write('\t')
file.write(j)
file.write('\n')
يبدو الناتج مثل هذا:
seq1 ACTAGACCCTAG
sequence287653 ACTAGNACTGGG
s9 ACTAGAAACTAG
لا تصطف الأعمدة بدقة بسبب التباين في طول العنصر الأول في كل قائمة داخلية. كيف يمكنني كتابة كميات مناسبة من المساحة البيضاء بين العناصر الأولى والثانية لجعل العمود الثاني يتصاعد لقابلية القراءة البشرية؟
المحلول
تحتاج إلى سلسلة تنسيق:
for i,j in data:
file.write('%-15s %s\n' % (i,j))
%-15s
يعني اليسار تبرير حقل 15 مساحة لسلسلة. ها هو الإخراج:
seq1 ACTAGACCCTAG
sequence287653 ACTAGNACTGGG
s9 ACTAGAAACTAG
نصائح أخرى
data = [['seq1', 'ACTAGACCCTAG'],
['sequence287653', 'ACTAGNACTGGG'],
['s9', 'ACTAGAAACTAG']]
with open('myfile.txt', 'w') as file:
file.write('\n'.join('%-15s %s' % (i,j) for i,j in data) )
بالنسبة لي أكثر وضوحا من التعبير مع الحلقة
"%10s" % obj
سيضمن الحد الأدنى 10 مسافات مع تمثيل سلسلة OBJ محاذاة على اليمين.
"%-10s" % obj
يفعل الشيء نفسه ، ولكن يتوافق مع اليسار.
لا تنتمي إلى StackOverflow