2015-10-19 6 views
5

मैं पहली बैकस्लैश से पहले स्ट्रिंग के हिस्से को निकालने का प्रयास कर रहा हूं लेकिन मुझे लगता है कि यह ठीक से काम नहीं कर रहा है।आर: बैकस्लैश पर strsplit ()

मैंने स्ट्रस्प्लिट के लिए मैन्युअल पृष्ठ और ऑनलाइन खोज के बाद, इसे काम करने के कई तरीकों का प्रयास किया है।

मेरे वास्तविक स्थिति में तार एक dataframe जो मैं एक डेटाबेस कनेक्शन से प्राप्त कर रहे हैं, लेकिन मैं निम्नलिखित के साथ स्थिति को आसान बनाने में कर सकते हैं:

 
> strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","\\",fixed=TRUE) 
[[1]] 
[1] "BLAAT1\022E:" "BLAAT2"  "BLAAT3" 

> strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","\\",fixed=FALSE) 
Error in strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3", "\\", fixed = FALSE) : 
    invalid regular expression '\', reason 'Trailing backslash' 

> strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","\\\\",fixed=TRUE) 
[[1]] 
[1] "BLAAT1\022E:\\BLAAT2\\BLAAT3" 

> strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","\\\\",fixed=FALSE) 
[[1]] 
[1] "BLAAT1\022E:" "BLAAT2"  "BLAAT3"  

उम्मीद उत्पादन भी BLAAT1 और के बीच \ पर विभाजित हैं 022E:

अग्रिम

+0

आप उम्मीद उत्पादन के रूप में 4 तत्वों या सिर्फ 'BLAAT' और' 02E चाहते हैं: \\ BLATT2 \\ BLAAT3' 2 विभाजन के रूप में। बीटीडब्ल्यू, '\ 022' यह एक यूनिकोड प्रतीक है – akrun

+2

आपके पास ASCII वर्ण हैं, 'स्ट्रस्प्लिट (" BLAAT1 \ 022E: \\ BLAAT2 \\ BLAAT3 "," [[: cntrl:]] ")' आपको बताता है कि आप क्या करते हैं चाहते हैं? –

+0

'" \ 022 "' एक चरित्र है। – BenBarnes

उत्तर

6

यहाँ धन्यवाद एक regex कि आप उपयोग कर सकते है: यह \ में विभाजित है और एक non-printable character:

strsplit("BLAAT1\022E:\\BLAAT2\\BLAAT3","[\\\\]|[^[:print:]]",fixed=FALSE) 
# [1] "BLAAT1" "E:"  "BLAAT2" "BLAAT3" 

देखें IDEONE demo

+1

धन्यवाद, यह नहीं पता था कि \ 022 एक गैर-प्रिंट करने योग्य चरित्र था। –

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