पांडों में अंतरिक्ष अलग मूल्यों के साथ फाइल कैसे पढ़ें


84

मैं फाइल को पंडों में पढ़ने की कोशिश करता हूं। फ़ाइल में स्थान के आधार पर मान अलग-अलग हैं, लेकिन मैंने जितने स्थान आज़माए हैं:

pd.read_csv('file.csv', delimiter=' ')

लेकिन यह काम नहीं करता है


जवाबों:


141

delim_whitespace=Trueतर्क जोड़ें , यह रेगेक्स से तेज है।


उन्हें जोड़ना चाहिए, और हटा दें delimiter=' 'क्योंकि वे हाल के संस्करणों में परस्पर अनन्य हैं।
matanster

2
@matanster: delimiter=' 'बहुत भंगुर है, यह एक और केवल एक स्थान की उम्मीद करता है। कोई टैब, न्यूज़लाइन, मल्टीपल स्पेस, नॉनब्रेकिंग व्हाट्सएप, इनका कॉम्बिनेशन इत्यादि delimiter='\s+'जो पंडों की सलाह है और जो ज्यादा मजबूत है।
दोपहर

29

आप रीमिक्स को सीमांकक के रूप में उपयोग कर सकते हैं:

pd.read_csv("whitespace.csv", header=None, delimiter=r"\s+")

2
यह तब मदद करता है जब आपके पास सीमांकक के रूप में केवल एक स्थान होता है। वर्तमान संस्करणों में engine = "python"एक चेतावनी से बचने के लिए जोड़ना चाहिए ।
जुर्ग मर्लिन स्पाक

1

यदि आप स्वीकृत उत्तर का उपयोग करके काम करने के लिए पाठ पार्सिंग नहीं प्राप्त कर सकते हैं (जैसे यदि आपकी पाठ फ़ाइल में गैर समान पंक्तियाँ हैं) तो यह पायथन के सीएसवी पुस्तकालय के साथ प्रयास करने लायक है - यहाँ एक उपयोगकर्ता द्वारा परिभाषित बोली का उपयोग करके उदाहरण दिया गया है :

 import csv

 csv.register_dialect('skip_space', skipinitialspace=True)
 with open(my_file, 'r') as f:
      reader=csv.reader(f , delimiter=' ', dialect='skip_space')
      for item in reader:
          print(item)

यह सच नहीं है। यह अजगर 3.8 और पांडा के साथ काम करता है। प्रश्न पंडों में एक पाठ फ़ाइल पढ़ने के लिए पूछता है।
स्पा

क्षमा करें - मैंने इसके लिए अपने उत्तर को अपडेट कर दिया है।
पियरज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.