R में एक स्ट्रिंग से सभी विशेष वर्ण निकालें?


117

आर में स्ट्रिंग से सभी विशेष पात्रों को कैसे निकालना है और उन्हें रिक्त स्थान से बदलना है?

हटाने के लिए कुछ विशेष वर्ण हैं: ~!@#$%^&*(){}_+:"<>?,./;'[]-=

मैंने पैटर्न के regexसाथ कोशिश की है [:punct:]लेकिन यह केवल विराम चिह्नों को हटाता है।

प्रश्न 2: और विदेशी भाषाओं के पात्रों को कैसे हटाया जाए जैसे â í ü Â á ą ę ś ć:?

उत्तर: [^[:alnum:]]हटाने ~!@#$%^&*(){}_+:"<>?,./;'[]-=या उपयोग [^a-zA-Z0-9]करने के लिए या कार्यों â í ü Â á ą ę ś ćमें भी निकालने के लिए उपयोग करें ।regexregexpr


4
"विशेष चरित्र" की परिभाषा क्या है?
कोसके

मेरी अपनी परिभाषा में हर वह किरदार होगा जो यूनिकोड ;-) में नहीं है। लेकिन मुझे लगता है कि कई अन्य लोग असहमत होंगे।
जॉय

शायद एक नज़र subया gsubकार्यों पर।
पॉल हैमस्ट्रा

5
regex [: punct:] नौकरी के आधे हिस्से को बनाने जा रहा है या सबको
Qbik

जवाबों:


197

अवांछित पात्रों की पहचान करने के लिए आपको नियमित अभिव्यक्ति का उपयोग करने की आवश्यकता है । सबसे आसानी से पढ़ने योग्य कोड के लिए, आप पैकेज str_replace_allसे चाहते हैं stringr, हालांकि gsubबेस आर से ही काम करता है।

सटीक नियमित अभिव्यक्ति इस बात पर निर्भर करती है कि आप क्या करने की कोशिश कर रहे हैं। आप केवल उन विशिष्ट वर्णों को हटा सकते हैं जो आपने प्रश्न में दिए थे, लेकिन सभी विराम चिह्नों को हटाना बहुत आसान है।

x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")

(आधार R समतुल्य है gsub("[[:punct:]]", " ", x)।)

एक विकल्प सभी गैर-अल्फ़ान्यूमेरिक वर्णों को स्वैप करना है।

str_replace_all(x, "[^[:alnum:]]", " ")

ध्यान दें कि पत्र या संख्या या विराम चिह्न का गठन करने की परिभाषा आपके स्थान के आधार पर थोड़ी भिन्न होती है, इसलिए आपको जो चाहिए वह प्राप्त करने के लिए थोड़ा प्रयोग करने की आवश्यकता हो सकती है।


11
अच्छा जवाब +1 आप को बदलने के लिए चाहते हो सकता है " "के साथ ""अन्यथा आप स्ट्रिंग में खाली सफेद स्थान है।
टायलर रिंकर

8
@TylerRinker: सच है, हालांकि QBik ने विशेष रूप से रिक्त स्थान के लिए पूछा था।
रिची कॉटन

8
उन पागल पात्रों को हटाने के लिए कैसे â í ü Â á:?
Qbik

1
आपको नियमित अभिव्यक्ति पर पढ़ने की जरूरत है। मेरे उत्तर में लिंक के साथ शुरू करें, और फिर पढ़ें ?regexऔर ?regexpr
रिची कॉटन

1
के [^[:alnum:]]साथ [^a-zA-Z0-9]या संभवतः की कोशिश करो \\W
रिची कॉटन

27

उन "पागल" पात्रों को हटाने के लिए रेगेक्स का उपयोग करने के बजाय, उन्हें एएससीआईआई में परिवर्तित करें, जो लहजे को हटा देगा, लेकिन अक्षरों को रखेगा।

astr <- "Ábcdêãçoàúü"
iconv(astr, from = 'UTF-8', to = 'ASCII//TRANSLIT')

जिसके परिणामस्वरूप

[1] "Abcdeacoauu"

मुझे जोड़ना था iconv(astr, from="UFT-8", to="ASCII//TRANSLIT"), अन्यथा फ्रेंच पात्रों के साथ जैसे कि çयह थोड़ा अजीब है।
ड्यूकियो ए

8

विशेष वर्णों को धर्मत्याग में परिवर्तित करें,

Data  <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)

नीचे दिए गए कोड को हटाने के लिए अतिरिक्त '' एपोस्ट्रोफ

Data <- gsub("''","" , Data ,ignore.case = TRUE)

gsub(..)एपोस्ट्रोफ के साथ विशेष चरित्र को बदलने के लिए फ़ंक्शन का उपयोग करें

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