سؤال

باستخدام الكود أدناه، أحصل على المعلومات الصحيحة للملف - نوعًا ما.إليك الكود:

filename = raw_input('What would you like to name the file? ')

import csv

data = [frames]
out = csv.writer(open(filename,"w"), delimiter=' ',quoting=csv.QUOTE_MINIMAL)
out.writerows(data)

يؤدي هذا إلى إنشاء شيء يشبه هذا في ملف نصي:

"[255   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0]" "[  0 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171
 171 171]" 

أود أن تبدو المعلومات كما يلي:

255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 []0 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

يمثل القوسان حرفًا يشير إلى صف جديد من المعلومات.إنه مستطيل صغير في محرر النصوص الخاص بي ولست متأكدًا من ماهية الحرف.

إذًا، كيف يمكنني التخلص من علامات الاقتباس والأقواس واستخدام هذه الشخصية الأخرى؟

يحرر:

لقد حاولت استخدام الكود أدناه وحصلت على الخطأ التالي:

Traceback (most recent call last):   
  File "(stdin)", line 1, in (module)   
  File "backandforth3.py", line 154, in (module)
    out.write(' '.join(frame)) 
Type Error: sequence item 0: expect string, numpy.int32 found
هل كانت مفيدة؟

المحلول

أفترض أنك تستخدم برنامج "المفكرة" كمحرر للنصوص؟خطوط جديدة على نمط يونكس (\n) تظهر كمربعات في برنامج "المفكرة" لأنها تدعم الخطوط الجديدة لنظام التشغيل Windows فقط (\r\n).ومع ذلك، يجب أن يوفر هذا الإخراج الذي تتوقعه:

filename = raw_input('What would you like to name the file? ')

with open(filename, 'wb') as out:
    for frame in frames:
        out.write(' '.join(str(num) for num in frame))
        out.write('\r\n')

ليس هناك سبب للالتفاف frames وفي قائمة أخرى؛بافتراض أن المتغير عبارة عن قائمة من قوائم الأرقام، كما يشير الناتج المتوقع، يجب أن يعمل هذا بشكل جيد.

أيضًا، إذا كان من الضروري أن يكون لديك "المربعات" التي وصفتها في الإخراج، فاستبدلها '\r\n' مع '\n'.

نصائح أخرى

لو frames هي مصفوفة numpy مما يمكنك استخدامه numpy.savetxt() وظيفة:

numpy.savetxt(filename, frames)

لإصلاح الخاص بك csv كود فتح الملف في الوضع الثنائي wb لتجنب إتلاف نهاية السطور، ولا تلتف frames في قائمة أخرى يبدو أنها مصفوفة ثنائية الأبعاد بالفعل:

import csv

with open(filename,"wb") as f:
    writer = csv.writer(f, delimiter=' ', quoting=csv.QUOTE_MINIMAL)
    writer.writerows(frames)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top