2015-11-03 6 views
6

में सहेज मैं एक पाठ फ़ाइल जो फ़ाइलों पथ के बहुत सारे file.txt धारण करने के लिए:उपयोग Regex फ़ाइल पथ निकालने और अजगर

C:\data\AS\WO\AS_WOP_1PPPPPP20070506.bin 
C:\data\AS\WO\AS_WOP_1PPPPPP20070606.bin 
C:\data\AS\WO\AS_WOP_1PPPPPP20070708.bin 
C:\data\AS\WO\AS_WOP_1PPPPPP20070808.bin 
... 

क्या मैं Regex के साथ किया था से तारीख को निकालने के लिए पथ:

import re 

textfile = open('file.txt', 'r') 
filetext = textfile.read() 
textfile.close() 

data = [] 

for line in filetext: 
    matches = re.search("AS_[A-Z]{3}_(.{7})([0-9]{4})([0-9]{2})([0-9]{2})", line) 
    data.append(line) 

यह मुझे जो चाहिए वह नहीं देता है।

मेरे उत्पादन इस तरह होना चाहिए:

year month 
2007  05 
2007  06 
2007  07 
2007  08 

और फिर सूचियों की सूची के रूप में सहेज:

[['2007', '5'], ['2007', '6'], ['2007', '7'], ['2007', '8']] 

या एक पांडा श्रृंखला रूप सहेजें।

क्या मैं चाहता हूं कि regex के साथ कोई रास्ता है!

+0

आप कहते हैं कि उत्पादन तुम क्या उम्मीद कर रहे थे नहीं है, लेकिन मैं नहीं दिख रहा है कि अपने कोड किसी भी उत्पादन बिल्कुल भी पैदा करता है । –

+1

'textfile.read()' फ़ाइल की पूरी सामग्री को एक लंबी स्ट्रिंग के रूप में लौटाता है। 'फ़ाइल टेक्स्ट' लूप में लाइन के लिए प्रत्येक ** वर्ण ** पर लूपिंग है। –

+0

@ जॉन-गॉर्डन बिल्कुल, मुझे प्रत्येक चरित्र स्ट्रिंग मिल गई। और भी readline() मुझे सिर्फ पहली पंक्ति फिर चरित्र की स्ट्रिंग – GeoCom

उत्तर

2

कोशिश इस का उपयोग करते हुए पांडा:

df = pd.read_csv('yourfile.txt',header=None) 
df.columns = ['paths'] 
# pandas string method extract takes a regex 
df['paths'].str.extract('(\d{4})(\d{2})') 

उत्पादन:

 0 1 
0 2007 05 
1 2007 06 
2 2007 07 
3 2007 08 
+0

यह वही है जो मैं चाहता था, धन्यवाद – GeoCom

3

आप इस के लिए अपने regex को आसान बनाने में कर सकते हैं:

/(....)(..)..\.bin$/ 

समूह 1 साल होगा, जबकि समूह 2 महीने होगा। मुझे लगता है कि प्रारूप पूरे फ़ाइल से संबंधित है।

अब, .किसी भी चरित्र का प्रतिनिधित्व करता है और \. "डॉट" या शाब्दिक . प्रतिनिधित्व करता है। $ स्ट्रिंग के अंत में है। तो, मैं लाइन के अंत में .bin से मेल खाता हूं और दिन छोड़कर बस वर्ष और महीने का समूह बना रहा हूं।

+1

हाँ देता है .. बेहतर जवाब। – Maroun

+1

@ अमित-जोकी मुझे तुम्हारा मतलब नहीं मिला, मैं regex के साथ एक नौसिखिया हूँ। क्या आप अपना कोड बढ़ा सकते हैं और समझा सकते हैं – GeoCom

+2

@ मिल्बान मुझे आशा है कि मेरा संपादन –

संबंधित मुद्दे