كتابة نص محدد الفضاء الأبيض ليكون قابلاً للقراءة في بيثون

StackOverflow https://stackoverflow.com/questions/3689936

سؤال

لدي قائمة بالقوائم التي تبدو مثل هذا:

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 يفعل الشيء نفسه ، ولكن يتوافق مع اليسار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top