স্ট্রিপ স্পেসস / ট্যাবস / নিউলাইনস - অজগর


101

আমি লিনাক্সে পাইথন ২.7-তে সমস্ত স্পেস / ট্যাব / নিউলাইনগুলি সরিয়ে দেওয়ার চেষ্টা করছি।

আমি এটি লিখেছি, এটি কাজ করা উচিত:

myString="I want to Remove all white \t spaces, new lines \n and tabs \t"
myString = myString.strip(' \n\t')
print myString

আউটপুট:

I want to Remove all white   spaces, new lines 
 and tabs

এটি করা সহজ জিনিস বলে মনে হচ্ছে, তবুও আমি এখানে কিছু মিস করছি। আমার কি কিছু আমদানি করা উচিত?


এই সম্পর্কিত প্রশ্নের উত্তরটি দেখুন: স্ট্যাকওভারফ্লো / প্রশ্ন / 1185524/… স্ট্রিপ () সমস্ত অক্ষর নয়, কেবল শীর্ষস্থানীয় এবং অনুসরণকারী অক্ষরগুলি সরিয়ে দেয়।
ডিক্রুনি

4
: দরকারী হতে পারে stackoverflow.com/questions/8928557/...
newtover

4
এটি আমার জন্য কাজ করেন, থেকে: [ছাঁটা কিভাবে হোয়াইটস্পেস (ট্যাব সহ)?] [1] গুলি = s.strip ( '\ টি \ n \ n R') [1]: stackoverflow.com/questions/1185524/...
stamat

উত্তর:


129

str.split([sep[, maxsplit]])না sepবা সহ ব্যবহার করুন sep=None:

ডক্স থেকে :

যদি sepনির্দিষ্ট না হয় বা হয় তবে Noneএকটি পৃথক বিভাজনযুক্ত অ্যালগরিদম প্রয়োগ করা হয়: পরপর শ্বেত স্পেসের রানগুলি একক বিভাজক হিসাবে বিবেচিত হয় এবং স্ট্রিংটির নেতৃত্বাধীন বা পেছনের সাদা অংশ থাকলে ফলাফলের শুরু বা শেষের কোনও খালি স্ট্রিং থাকবে না।

ডেমো:

>>> myString.split()
['I', 'want', 'to', 'Remove', 'all', 'white', 'spaces,', 'new', 'lines', 'and', 'tabs']

str.joinএই আউটপুট পেতে ফিরে তালিকাতে ব্যবহার করুন:

>>> ' '.join(myString.split())
'I want to Remove all white spaces, new lines and tabs'

58

আপনি যদি একাধিক শ্বেত স্পেস আইটেমগুলি সরাতে এবং সেগুলিকে একক স্পেস দিয়ে প্রতিস্থাপন করতে চান তবে সবচেয়ে সহজ উপায় এটির মতো একটি রেজিপ্সপ সহ:

>>> import re
>>> myString="I want to Remove all white \t spaces, new lines \n and tabs \t"
>>> re.sub('\s+',' ',myString)
'I want to Remove all white spaces, new lines and tabs '

তারপরে আপনি চাইলে পিছনের স্থানটি সরিয়ে ফেলতে .strip()পারেন।


15

পুনরায় গ্রন্থাগার ব্যবহার করুন

import re
myString = "I want to Remove all white \t spaces, new lines \n and tabs \t"
myString = re.sub(r"[\n\t\s]*", "", myString)
print myString

আউটপুট:

আইভ্যান্তোরোমোভেলওয়াইটস স্পেসস, নিউলাইনস্যান্ডট্যাব


4
এটি অনুলিপি নয়, @ দ্য জিআর 8 অ্যাডাক্রন দ্বারা দেওয়া মূল উত্তরের একটি সংশোধন
জেসুইসমে


11

এটি কেবল ট্যাব, নিউলাইনস, স্পেস এবং অন্য কিছুই মুছে ফেলবে।

import re
myString = "I want to Remove all white \t spaces, new lines \n and tabs \t"
output   = re.sub(r"[\n\t\s]*", "", myString)

আউটপুট:

ইভন্তোরেমোভেলওয়াইস্পেসস, নিউলাইনস্যান্ডট্যাব

শুভ দিন!


4
সমাধানের জন্য ধন্যবাদ - আমি মনে করি একটি ছোট সংশোধন প্রয়োজন, এটি '*' এর পরিবর্তে '+' হওয়া উচিত।
সাজাদ করিম

6

রেজেক্সের ব্যবহারের পরামর্শ দেয় উপরোক্ত সমাধানগুলি আদর্শ নয় কারণ এটি এমন একটি ছোট কাজ এবং রেজিএক্সের কাজের সরলতার চেয়ে বেশি সংস্থান ওভারহেডের প্রয়োজন requires

আমি যা করি তা এখানে:

myString = myString.replace(' ', '').replace('\t', '').replace('\n', '')

বা যদি আপনার কাছে এমন কিছু মুছতে থাকে যাতে একটি একক লাইন সমাধান কৃত্রিমভাবে দীর্ঘ হয়:

removal_list = [' ', '\t', '\n']
for s in removal_list:
  myString = myString.replace(s, '')

2

যেহেতু আরও জটিল কিছু ছিল না তাই আমি এটি ভাগ করে নিতে চেয়েছিলাম কারণ এটি আমাকে সাহায্য করেছিল।

এটি আমি প্রথমে ব্যবহার করেছি:

import requests
import re

url = '/programming/10711116/strip-spaces-tabs-newlines-python' # noqa
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
print("{}".format(r.content))

অনাকাঙ্ক্ষিত ফলাফল:

b'<!DOCTYPE html>\r\n\r\n\r\n    <html itemscope itemtype="http://schema.org/QAPage" class="html__responsive">\r\n\r\n    <head>\r\n\r\n        <title>string - Strip spaces/tabs/newlines - python - Stack Overflow</title>\r\n        <link

এটিকেই আমি এটিতে পরিবর্তন করেছি:

import requests
import re

url = '/programming/10711116/strip-spaces-tabs-newlines-python' # noqa
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
regex = r'\s+'
print("CNT: {}".format(re.sub(regex, " ", r.content.decode('utf-8'))))

প্রত্যাশিত ফল:

<!DOCTYPE html> <html itemscope itemtype="http://schema.org/QAPage" class="html__responsive"> <head> <title>string - Strip spaces/tabs/newlines - python - Stack Overflow</title>

@ ম্যাটএইচ উল্লেখ করেছেন যে সুনির্দিষ্ট রেইজেক্সটি তা আমার কোডটিতে এটি ফিট করার জন্য কাজ করেছিল। ধন্যবাদ!

দ্রষ্টব্য: এটি python3


0

যোগদানের মধ্যে একটি তালিকা বোঝার ব্যবহার করে একটি ওয়ান-লাইনার সম্পর্কে কীভাবে?

>>> foobar = "aaa bbb\t\t\tccc\nddd"
>>> print(foobar)
aaa bbb                 ccc
ddd

>>> print(''.join([c for c in foobar if c not in [' ', '\t', '\n']]))
aaabbbcccddd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.