'str' ऑब्जेक्ट पायथन में आइटम असाइनमेंट का समर्थन नहीं करता है


130

मैं एक स्ट्रिंग से कुछ पात्रों को पढ़ना चाहूंगा और इसे अन्य स्ट्रिंग में डालूंगा (जैसे हम C में करते हैं)।

तो मेरा कोड नीचे की तरह है

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)

C में कोड हो सकता है

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

मैं पायथन में इसे कैसे लागू कर सकता हूं?


19
Btw, अजगर चरवाहों के बाद अपने चर का नाम नहीं है। यदि आप 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

ऊपर प्रत्येक पुनरावृत्ति के साथ एक नया स्ट्रिंग बनाता है , और उस नए स्ट्रिंग के संदर्भ को संग्रहीत करता है srr


फिर अगर मैं स्ट्रिंग से पात्रों को पढ़ना चाहूंगा और उन्हें कुछ कॉपी करूंगा, तो मैं ऐसा कैसे कर सकता हूं?
रस्मी रंजन नायक

1
@RasmiRanjanNayak: यह इस बात पर निर्भर करता है कि आपको उन पात्रों के साथ क्या करना है। मेरे उत्तर में मैंने दिखाया है कि कैसे उन्हें दूसरे स्ट्रिंग में जोड़ा जा सकता है।
एनपीई

मैं "वर्ल्ड हैलो" के लिए एक कार्यक्रम "हैलो वर्ल्ड" लिखना चाहूंगा। इसलिए मेरा कोड अंतरिक्ष ('') की खोज करना चाहिए। इसलिए मैं मदद की तलाश में था
रश्मि रंजन नायक

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