'str' অবজেক্ট পাইথনে আইটেম অ্যাসাইনমেন্ট সমর্থন করে না


130

আমি একটি স্ট্রিং থেকে কিছু অক্ষর পড়তে এবং এটিকে অন্য স্ট্রিংয়ের মধ্যে রাখতে চাই (যেমন আমরা সি তে করি)।

সুতরাং আমার কোড নীচের মত

import string
import re
str = "Hello World"
j = 0
srr = ""
for i in str:
    srr[j] = i #'str' object does not support item assignment 
    j = j + 1
print (srr)

সি কোড হতে পারে

i = j = 0; 
while(str[i] != '\0')
{
srr[j++] = str [i++];
}

পাইথনে আমি কীভাবে এটি প্রয়োগ করতে পারি?


19
বিটিডব্লিউ, পাইথন বিল্টিনের পরে আপনার ভেরিয়েবলের নাম রাখবেন না। আপনি যদি strএখানে ভেরিয়েবল হিসাবে ব্যবহার করেন তবে আপনি স্ট্রিং রূপান্তর করতে অক্ষম করতে পারবেন str(var_that_is_not_a_string)বা যেমন তুলনা টাইপ করতে পারেন type(var_with_unknown_type) == str
জোয়েল করনেট

উত্তর:


100

পাইথনে, স্ট্রিংগুলি অপরিবর্তনীয়, তাই আপনি জায়গায় তাদের অক্ষর পরিবর্তন করতে পারবেন না।

তবে, আপনি নিম্নলিখিতটি করতে পারেন:

for i in str:
    srr += i

যে কারণে এটি কাজ করে তা হ'ল এটির জন্য একটি শর্টকাট:

for i in str:
    srr = srr + i

উপরে একটি নতুন STRING তৈরি প্রতিটি পুনরাবৃত্তির সঙ্গে, এবং দোকানে নতুন স্ট্রিং রেফারেন্স srr


তারপরে যদি আমি স্ট্রিং থেকে অক্ষরগুলি পড়তে এবং তাদের যেখানে কিছু অনুলিপি করতে চাই, তবে আমি কীভাবে এটি করতে পারি?
রাসমি রঞ্জন নায়ক

1
@ রসমি রঞ্জননায়ক: এই চরিত্রগুলির সাথে আপনার কী করা দরকার তা নির্ভর করে। আমার উত্তরে আমি দেখিয়েছি কীভাবে তারা অন্য স্ট্রিং এ যুক্ত হতে পারে।
এনপিই

আমি "ওয়ার্ল্ড হ্যালো" তে একটি প্রোগ্রাম "হ্যালো ওয়ার্ল্ড" লিখতে চাই। সুতরাং আমার কোডে স্থান ('') অনুসন্ধান করা উচিত। তাই আমি সাহায্যের সন্ধান
করছিলাম

5
@ রাসমি রঞ্জননায়ক:print " ".join(reversed("Hello world".split())).capitalize()
জোয়েল

2
@ অ্যাক্স: এটি আক্ষরিক একে অপরের কয়েক সেকেন্ডের মধ্যেই ছিল। : ডি
জোয়েল কর্নেট

113

অন্যান্য উত্তরগুলি সঠিক, তবে আপনি অবশ্যই এর মতো কিছু করতে পারেন:

>>> str1 = "mystring"
>>> list1 = list(str1)
>>> list1[5] = 'u'
>>> str1 = ''.join(list1)
>>> print(str1)
mystrung
>>> type(str1)
<type 'str'>

আপনি যদি সত্যিই চান।


14

পাইথনের স্ট্রিংগুলি পরিবর্তনযোগ্য নয় তাই আপনি সিতে যা করার চেষ্টা করছেন তা অজগর পক্ষে সহজসাধ্য হবে। আপনাকে একটি নতুন স্ট্রিং তৈরি করতে হবে।

আমি একটি স্ট্রিং থেকে কিছু অক্ষর পড়তে এবং এটি অন্য স্ট্রিংয়ে রাখতে চাই।

তারপরে একটি স্ট্রিং স্লাইস ব্যবহার করুন:

>>> s1 = 'Hello world!!'
>>> s2 = s1[6:12]
>>> print s2
world!

5

আইস হিসাবে উল্লিখিত হয়েছে - পাইথনের স্ট্রিং অপরিবর্তনীয় (আপনি এগুলিকে স্থান পরিবর্তন করতে পারবেন না)।

আপনি যা করার চেষ্টা করছেন তা বিভিন্নভাবে করা যেতে পারে:

# Copy the string

foo = 'Hello'
bar = foo

# Create a new string by joining all characters of the old string

new_string = ''.join(c for c in oldstring)

# Slice and copy
new_string = oldstring[:]

1

আপনি যদি অন্য একটি চরিত্রের জন্য একটি নির্দিষ্ট চরিত্রের পরিবর্তন করতে চান তবে অন্য একটি পদ্ধতি:

def swap(input_string):
   if len(input_string) == 0:
     return input_string
   if input_string[0] == "x":
     return "y" + swap(input_string[1:])
   else:
     return input_string[0] + swap(input_string[1:])

0

এই সমাধান সম্পর্কে কীভাবে:

str = "হ্যালো ওয়ার্ল্ড" (সমস্যা হিসাবে বলা হয়েছে) srr = str + ""


-2

হাই আপনার স্ট্রিং বিভক্ত পদ্ধতিটি ব্যবহার করা উচিত:

i = "Hello world"
output = i.split()

j = 'is not enough'

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