في Python ، يمكنك بسهولة قراءة ملفات csv وكتابتها باستخدام وحدة csv القياسية.
على سبيل المثال ، افترض أن لديك ملف csv التالي ، sample.csv.
11,12,13,14
21,22,23,24
31,32,33,34
يمكن قراءة هذا على النحو التالي.
import csv
with open('data/src/sample.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# ['11', '12', '13', '14']
# ['21', '22', '23', '24']
# ['31', '32', '33', '34']
ما تحتاج إلى توخي الحذر منه هنا هو عندما يكون هناك مسافة بعد الفاصلة. عادة ، يجب ألا تكون هناك مسافات غير ضرورية بعد الفاصلة ، لكن في بعض الأحيان أرى ملفات بها مسافات.
في مثل هذه الحالات ، بشكل افتراضي ، لا يتم تجاهل المسافة البيضاء ويتم قراءة الملف كما هو.
11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34
بمعنى آخر ، إذا قرأت الملف أعلاه بفاصلة متبوعة بمسافة ، فسيكون الإخراج على النحو التالي
with open('data/src/sample_space.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# ['11', ' 12', ' 13', ' 14']
# ['21', ' 22', ' 23', ' 24']
# ['31', ' 32', ' 33', ' 34']
إذا حددت ما يلي في csv.reader ، فسيتم تخطي المسافات بعد الفاصلة.skipinitialspace=True
with open('data/src/sample_space.csv', 'r') as f:
reader = csv.reader(f, skipinitialspace=True)
for row in reader:
print(row)
# ['11', '12', '13', '14']
# ['21', '22', '23', '24']
# ['31', '32', '33', '34']
في مثال بسيط مثل المثال أعلاه ، يمكنك استخدام شريط () لإزالة المسافة البيضاء. المشكلة هي عندما تكون محاطة بعلامات اقتباس مزدوجة مثل ما يلي.
"one,one", "two,two", "three,three"
يجب اعتبار الجزء المحاط بعلامات اقتباس مزدوجة كعنصر واحد ، ولكن إذا كان skipinitialspace = False (الافتراضي) ، فسيبدو كما يلي.
with open('data/src/sample_double_quotation.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
# ['one,one', ' "two', 'two"', ' "three', 'three"']
يمكن القيام بذلك عن طريق تعيين skipinitialspace = True.
with open('data/src/sample_double_quotation.csv', 'r') as f:
reader = csv.reader(f, skipinitialspace=True)
for row in reader:
print(row)
# ['one,one', 'two,two', 'three,three']
وينطبق الشيء نفسه عند قراءة ملف csv مع read_csv () في الباندا. إذا كان ملف csv به مسافة بعد الفاصلة ، فيمكنك القيام بما يلي.read_csv(skipinitialspace=True)