পাইথন ব্যবহার করে স্ট্রিং থেকে একটি অক্ষর কীভাবে মুছবেন


457

উদাহরণস্বরূপ একটি স্ট্রিং রয়েছে। EXAMPLE

আমি কীভাবে মাঝের চরিত্রটি Mএটি থেকে সরিয়ে ফেলব ? আমার কোড লাগবে না আমি জানতে চাই:

  • পাইথনের স্ট্রিংগুলি কি কোনও বিশেষ চরিত্রে শেষ হয়?
  • কোনটি উত্তম উপায় - মাঝের চরিত্র থেকে শুরু করে ডান থেকে বামে সমস্ত কিছু সরিয়ে নতুন স্ট্রিং তৈরি করা এবং মাঝের চরিত্রটি অনুলিপি করা না?

কিছু উদাহরণ জার্নালদেব.
জোশ

উত্তর:


638

পাইথনে স্ট্রিং অপরিবর্তনীয়, তাই আপনাকে একটি নতুন স্ট্রিং তৈরি করতে হবে। কীভাবে নতুন স্ট্রিং তৈরি করবেন তার কয়েকটি বিকল্প আপনার কাছে রয়েছে। যদি আপনি 'এম' যেখানেই প্রদর্শিত হয় অপসারণ করতে চান:

newstr = oldstr.replace("M", "")

আপনি যদি কেন্দ্রীয় চরিত্রটি মুছতে চান:

midlen = len(oldstr)/2   # //2 in python 3
newstr = oldstr[:midlen] + oldstr[midlen+1:]

আপনি জিজ্ঞাসা করেছেন স্ট্রিংগুলি কোনও বিশেষ চরিত্রের সাথে শেষ হয় কিনা। না, আপনি সি প্রোগ্রামারের মতো ভাবছেন। পাইথনে, স্ট্রিংগুলি তাদের দৈর্ঘ্যের সাথে সঞ্চিত থাকে, সুতরাং কোনও বাইট মান সহ \0, স্ট্রিংয়ে উপস্থিত হতে পারে।


16
প্রদত্ত যে প্রশ্নকর্তা অজগরটির জন্য একেবারে নতুন, এটি লক্ষ্য করার মতো বিষয় যে সংস্করণ ২.X অজগাতে "/" অপারেটর একটি পূর্ণসংখ্যা (শূন্যের দিকে কাটা) দেয়, সংস্করণ ৩. এক্স অজগরটিতে আপনার "//" ব্যবহার করা উচিত পরিবর্তে. এছাড়াও, from __future__ import divisionআপনার স্ক্রিপ্টের শুরুতে লাইনটি সংস্করণ 3.X এর মত সংস্করণ 2.X অজগরকে তৈরি করবে
মাইকেল ডান

1
মনে রাখবেন যে "এম" যদি রেখার একমাত্র বিষয়বস্তু হয় তবে "" তার জায়গায় খালি লাইনের পিছনে ছেড়ে যায়।
বিটজুঙ্কি

1
@ 7 স্পেশাল জিমেস আপনি এই স্ট্রিংটি দিয়ে যা করেন তার উপর এটি সম্পূর্ণরূপে নির্ভর করে। একটি খালি স্ট্রিংয়ের মতো ""একটি খালি রেখা বোঝায় না। আপনি যদি এটি একটি তালিকায় রাখেন এবং নতুন লাইনের সাথে যুক্ত হন তবে এটি খালি লাইন তৈরি করবে, তবে এমন অনেকগুলি জায়গা রয়েছে যা আপনি খালি স্ট্রিং ব্যবহার করতে পারেন যা এটি না করে।
নেড ব্যাচেল্ডার

68

এটি সম্ভবত সেরা উপায়:

original = "EXAMPLE"
removed = original.replace("M", "")

অক্ষর এবং এ জাতীয় স্থানান্তর সম্পর্কে চিন্তা করবেন না। বেশিরভাগ পাইথন কোড বিমূর্ততার অনেক উচ্চ স্তরে স্থান নেয়।


6
Mঅনন্য হতে পারে না। সেক্ষেত্রে M, এটি সমস্ত এসকে প্রতিস্থাপন করবে , তাই না?
Lazer

14
হ্যাঁ, এটা সঠিক। আপনি যদি কেবল nঘটনাগুলি প্রতিস্থাপন করতে চান তবে ব্যবহার করুন original.replace("M", "", n)
পুনরাবৃত্তি

1
@ এস.লট আমি কেবলমাত্র একটি উদাহরণ প্রতিস্থাপনের জন্য সমাধান সরবরাহ করার পরামর্শ দেওয়ার জন্য
বাক্যবুদ্ধি হতে পেরেছিলাম

63

একটি নির্দিষ্ট অবস্থান প্রতিস্থাপন করতে:

s = s[:pos] + s[(pos+1):]

একটি নির্দিষ্ট অক্ষর প্রতিস্থাপন করতে:

s = s.replace('M','')

18
যদিও এটি কার্যকর হতে পারে, আমি মনে করি আপনার উত্তরটি প্রথম অংশে কী চলছে তা ব্যাখ্যা করে উন্নতি করা যেতে পারে, কারণ স্ট্রটারিং অপারেশনগুলি কোনও ব্যাখ্যা ছাড়াই পাইথন নবাগত শিশুটির পক্ষে সহজেই বোঝা সহজ নয়।
jloubert

সুতরাং এর দৈর্ঘ্য যদি হয় l। তারপরে প্রথম অংশের জন্য, পোসের জন্য সীমাবদ্ধতা হওয়া উচিত l-1 > pos >= 0
হাওয়ু চেন

s [: pos] 0 থেকে পজ -1 এবং স [[পজ +1]:] এ স্ট্রিংগুলি পজ +1 থেকে শেষের দিকে শেষ হয়। অতএব, এটি গুলি থেকে [পোস্ট] সরিয়ে দেয়।
s.singh

এটি প্রতিস্থাপন নয়, এটি হ্রাস পাচ্ছে। উভয় প্রধান ব্যবহারের ক্ষেত্রে উভয়ের জন্য তাদের অবস্থান নির্বাচন পদ্ধতি দ্বারা পৃথক করে উদাহরণ প্রদান করে অপারেশনটি আলাদা করা ভাল।
আলেকজান্ডার স্টোহর

28

স্ট্রিংগুলি অপরিবর্তনীয়। তবে আপনি এগুলিকে একটি তালিকায় রূপান্তর করতে পারেন যা পরিবর্তনীয় এবং তারপরে তালিকাটি পরিবর্তন করে ফেলার পরে স্ট্রিংয়ে রূপান্তর করতে পারেন।

s = "this is a string"

l = list(s)  # convert to list

l[1] = ""    # "delete" letter h (the item actually still exists but is empty)
l[1:2] = []  # really delete letter h (the item is actually removed from the list)
del(l[1])    # another way to delete it

p = l.index("a")  # find position of the letter "a"
del(l[p])         # delete it

s = "".join(l)  # convert back to string

বিদ্যমান স্ট্রিং থেকে আপনি যে চরিত্রটি চান তা বাদ দিয়ে অন্যরা যেমন দেখিয়েছে আপনিও নতুন স্ট্রিং তৈরি করতে পারেন।


4
আপনি কেবল str.replaceপদ্ধতিটি ব্যবহার করবেন না কেন ?
alichaudry

12

আমি কীভাবে মাঝের চরিত্রটি, অর্থাৎ এম থেকে মুছে ফেলব?

আপনি পারবেন না, কারণ পাইথনের স্ট্রিং অবিচ্ছেদ্য

পাইথনের স্ট্রিংগুলি কি কোনও বিশেষ চরিত্রে শেষ হয়?

না। তারা অক্ষরের তালিকার মতো; তালিকার দৈর্ঘ্য স্ট্রিংয়ের দৈর্ঘ্য নির্ধারণ করে এবং কোনও অক্ষরও টার্মিনেটর হিসাবে কাজ করে না।

কোনটি উত্তম উপায় - মাঝের চরিত্র থেকে শুরু করে ডান থেকে বামে সমস্ত কিছু সরিয়ে নতুন স্ট্রিং তৈরি করা এবং মাঝের চরিত্রটি অনুলিপি করা না?

আপনি বিদ্যমান স্ট্রিংটি সংশোধন করতে পারবেন না, তাই আপনাকে অবশ্যই মাঝারি চরিত্রটি বাদ দিয়ে সবকিছু তৈরি করে একটি নতুন তৈরি করতে হবে।


11

translate()পদ্ধতিটি ব্যবহার করুন :

>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'

3
পদ্ধতি বদলেছে। পাইথন 3 এর জন্য দস্তাবেজগুলি দেখুন: অনুবাদ করুন () এটি বিভিন্ন অক্ষরকে স্থানের সাথে প্রতিস্থাপন করে ( Noneঅপসারণ করতে কাজ করে না বলে মনে হচ্ছে):translate( str.maketrans("<>", " ") )
হ্যান্ডেল করুন

1
প্রকৃতপক্ষে, দস্তাবেজগুলি পাইথন 3 তে অনুবাদ () সহ বিভিন্ন অক্ষর মুছে ফেলার দুটি উপায় নির্দিষ্ট করে: str.maketrans( "", "", "<>")এবংstr.maketrans( {"<":None,">":None })
হ্যান্ডেল করবে

3
উত্তরের কোডের সমতুল্যটি অজগর 3 এ হয়ে যায়:'EXAMPLE'.translate({ord("M"): None})
yoniLavi

7

UserString.MutableString

পরিবর্তনীয় উপায়:

import UserString

s = UserString.MutableString("EXAMPLE")

>>> type(s)
<type 'str'>

# Delete 'M'
del s[3]

# Turn it for immutable:
s = str(s)

3
404 ওয়েবসাইট কোনও আমদানি নেই
কিছু

6
card = random.choice(cards)
cardsLeft = cards.replace(card, '', 1)

স্ট্রিং থেকে কীভাবে একটি অক্ষর অপসারণ করবেন: এখানে একটি উদাহরণ যেখানে স্ট্রিংয়ে অক্ষর হিসাবে প্রতিনিধিত্ব করা কার্ডগুলির একটি স্ট্যাক রয়েছে। এর মধ্যে একটি আঁকা (র্যান্ডম.চয়েস () ফাংশনের জন্য এলোমেলো মডিউল আমদানি করুন, এটি স্ট্রিংটিতে একটি এলোমেলো চরিত্র বেছে নিয়েছে)। স্ট্রিং ফাংশন দ্বারা প্রদত্ত বাকী কার্ডগুলি প্রতিস্থাপন () ব্যবহারের জন্য একটি নতুন স্ট্রিং, কার্ডফিট তৈরি করা হয়েছে যেখানে শেষ প্যারামিটারটি নির্দেশ করে যে খালি স্ট্রিং দ্বারা কেবল একটি "কার্ড" প্রতিস্থাপন করা হবে ...


6
def kill_char(string, n): # n = position of which character you want to remove
    begin = string[:n]    # from beginning to n (n not included)
    end = string[n+1:]    # n+1 through end of string
    return begin + end
print kill_char("EXAMPLE", 3)  # "M" removed

আমি এখানে কোথাও এটি দেখেছি ।


4

"এম" কে টুকরো টুকরো করার জন্য আমি এখানে যা করেছি:

s = 'EXAMPLE'
s1 = s[:s.index('M')] + s[s.index('M')+1:]

2
এটি কেবল এই নির্দিষ্ট স্ট্রিংয়ের কাজ করবে এবং এটি কোনও সাধারণ সমাধান নয়।
Andreas Bergström

3

আপনি যদি কোনও স্ট্রিংয়ে অক্ষর মুছতে / উপেক্ষা করতে চান এবং উদাহরণস্বরূপ, আপনার কাছে এই স্ট্রিং রয়েছে,

"[11: এল: 0]"

কোনও ওয়েব এপিআই প্রতিক্রিয়া থেকে বা এরকম কোনও কিছু থেকে, যেমন কোনও সিএসভি ফাইলের মতো, আসুন আমরা আপনাকে অনুরোধগুলি ব্যবহার করছি বলে মনে করি

import requests
udid = 123456
url = 'http://webservices.yourserver.com/action/id-' + udid
s = requests.Session()
s.verify = False
resp = s.get(url, stream=True)
content = resp.content

লুপ এবং অযাচিত অক্ষর থেকে মুক্তি পান:

for line in resp.iter_lines():
  line = line.replace("[", "")
  line = line.replace("]", "")
  line = line.replace('"', "")

Splitচ্ছিক বিভাজন এবং আপনি স্বতন্ত্রভাবে মান পড়তে সক্ষম হবেন:

listofvalues = line.split(':')

এখন প্রতিটি মান অ্যাক্সেস সহজ:

print listofvalues[0]
print listofvalues[1]
print listofvalues[2]

এটি মুদ্রণ করবে

11

এল

0


3

একটি charবা sub-string একবার মুছতে (কেবলমাত্র প্রথম ঘটনা):

main_string = main_string.replace(sub_str, replace_with, 1)

দ্রষ্টব্য: আপনি যে সংঘটনটি প্রতিস্থাপন করতে চান তার সংখ্যার জন্য এখানে 1যে কোনওটির সাথে প্রতিস্থাপন করা যেতে পারে int


3

আপনি কেবল তালিকা বোধগম্যতা ব্যবহার করতে পারেন।

ধরে নিন যে আপনার স্ট্রিং রয়েছে: my name isএবং আপনি চরিত্রটি মুছতে চান m। নিম্নলিখিত কোড ব্যবহার করুন:

"".join([x for x in "my name is" if x is not 'm'])

0
from random import randint


def shuffle_word(word):
    newWord=""
    for i in range(0,len(word)):
        pos=randint(0,len(word)-1)
        newWord += word[pos]
        word = word[:pos]+word[pos+1:]
    return newWord

word = "Sarajevo"
print(shuffle_word(word))

2
যদিও এই কোড স্নিপেট একটি ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে, সত্যিই আপনার পোস্টের মান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না।
andreas

0

অন্য উপায় একটি ফাংশন সঙ্গে হয়,

নীচে ফাংশনটি কল করে একটি স্ট্রিং থেকে সমস্ত স্বর অপসারণ করার উপায় রয়েছে

def disemvowel(s):
    return s.translate(None, "aeiouAEIOU")

-7

স্ট্রিংগুলি পাইথনে অপরিবর্তনীয় তাই আপনার উভয় বিকল্পের মূলত একই জিনিস mean

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.