أحاول قراءة ملف .csv في Python (Spyder) ولكني لا زلت أتلقى خطأً. رمز بلدي:
import csv
data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
data = csv.reader(data)
print(data)
أحصل على الخطأ التالية:
SyntaxError: (خطأ unicode) لا يمكن لبرنامج الترميز "unicodeescape" فك تشفير البايتات في الموضع 2-3: الهروب\UXXXXXXXX
لقد حاولت استبدال\مع\أو\و/وحاولت وضع r قبل "C .. لكن كل هذه الأشياء لم تنجح.
يحدث هذا الخطأ لأنك تستخدم سلسلة عادية كمسار. يمكنك استخدام أحد الحلول التالية لإصلاح مشكلتك.
r
قبل أن تقوم السلسلة العادية بتحويل السلسلة العادية إلى سلسلة خام:pandas.read_csv(r"C:\Users\DeePak\Desktop\myac.csv")
2:
pandas.read_csv("C:/Users/DeePak/Desktop/myac.csv")
3:
pandas.read_csv("C:\\Users\\DeePak\\Desktop\\myac.csv")
يتم تفسير الخط المائل العكسي الأول في السلسلة الخاصة بك كحرف خاص ، لأنه في الحقيقة يتبعه حرف "U" يتم تفسيره على أنه بداية نقطة رمز يونيكود.
لإصلاح هذا تحتاج إلى الهروب من خطوط مائلة عكسية في السلسلة. لا أعرف بيثون على وجه التحديد ولكني أعتقد أنك تفعل ذلك من خلال مضاعفة خطوط مائلة عكسية:
data = open("C:\\Users\\miche\\Documents\\school\\jaar2\\MIK\\2.6\\vektis_agb_zorgverlener")
يمكنك فقط وضع r
أمام السلسلة مع المسار الفعلي الخاص بك ، والذي يدل على سلسلة خام. فمثلا:
data = open(r"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
حاول كتابة مسار الملف كـ "C:\\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener"
، أي بخط مائل عكسي مزدوج بعد محرك الأقراص بدلاً من "C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener"
حسب السلسلة الحرفية :
يمكن إحاطة القيم الحرفية للسلسلة داخل علامات اقتباس مفردة (أي
'...'
) أو علامات اقتباس مزدوجة (أي"..."
). يمكن أيضًا تضمينها في مجموعات مطابقة من ثلاثة علامات اقتباس مفردة أو مزدوجة (يشار إليها عمومًا باسم سلاسل ذات علامات ثلاثية).يتم استخدام حرف الخط المائل العكسي (مثل
\
) للهروب من الأحرف التي سيكون لها معنى خاص ، مثل السطر الجديد أو الخط المائل العكسي نفسه أو حرف علامة الاقتباس. يمكن اختياريا أن تكون بادئة السلسلة الحرفية بحرفr
أوR
. تسمى هذه السلاسل السلاسل الأولية وتستخدم قواعد مختلفة لتسلسل هروب الخط المائل العكسي.في السلاسل الثلاثية المقتبسة ، السطور الجديدة غير المنقوصة و علامتي الاقتباس مسموح بها ، باستثناء أن ثلاثة علامتي اقتباس غير موصوفتين في صف ينهي السلسلة.
ما لم تكن البادئة
r
أوR
موجودة ، يتم تفسير تسلسل الهروب في السلاسل وفقًا لقواعد مشابهة لتلك المستخدمة في المعيار C.
من الناحية المثالية تحتاج إلى استبدال الخط:
data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
إلى أي من الأحرف التالية:
باستخدام raw بادئة و علامات اقتباس مفردة (أي '...'
):
data = open(r'C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener')
باستخدام علامات اقتباس مزدوجة (أي "..."
) والتهرب من حرف الخط المائل العكسي (أي \
):
data = open("C:\\Users\\miche\\Documents\\school\\jaar2\\MIK\\2.6\\vektis_agb_zorgverlener")
باستخدام علامات اقتباس مزدوجة (أي "..."
) وشخصية إعادة التوجيه (مثل /
):
data = open("C:/Users/miche/Documents/school/jaar2/MIK/2.6/vektis_agb_zorgverlener")
لقد نجح هذا الأمر من خلال تحييد "\" بواسطة f = open ('F: \\ file.csv')
اعتبره كسلسلة خام. مجرد إجابة بسيطة ، إضافة ص قبل مسار ويندوز الخاص بك.
import csv data = open(r"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener") data = csv.reader(data) print(data)
مجرد وضع ص في الجبهة يعمل بشكل جيد.
على سبيل المثال:
white = pd.read_csv(r"C:\Users\hydro\a.csv")
يجب أن يعمل double\لنظام Windows ، ولكن لا يزال عليك الاهتمام بالمجلدات التي ذكرتها في المسار. كل منهم (باستثناء اسم الملف) يجب أن يكون موجودا. وإلا سوف تحصل على خطأ.