পাইথনের একটি নির্দিষ্ট অবস্থানে স্ট্রিং যুক্ত করুন


157

পাইথনে এমন কোনও ফাংশন আছে যা আমি কোনও স্ট্রিংয়ের নির্দিষ্ট অবস্থানে একটি মান সন্নিবেশ করতে ব্যবহার করতে পারি?

এটার মতো কিছু:

"3655879ACB6"তারপর অবস্থানে 4 যোগ "-"পরিণত"3655-879ACB6"

উত্তর:


272

নং পাইথন স্ট্রিংগুলি অপরিবর্তনীয়।

>>> s='355879ACB6'
>>> s[4:4] = '-'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

তবে, একটি নতুন স্ট্রিং তৈরি করা সম্ভব যা এতে characterোকানো অক্ষর রয়েছে:

>>> s[:4] + '-' + s[4:]
'3558-79ACB6'

9
এটি যুক্ত করে আপনি ডান দিক থেকে অবস্থান পেতে নেতিবাচক সূচকগুলি ব্যবহার করতে পারেন, যেমনs[:-4]
রূবেন এল।

নতুন ফরম্যাট স্ট্রিং বাচনে ব্যবহার হচ্ছে:। '{0} - {1}' ফরম্যাট (র [: 4], s [4:])
srock

60

এটি খুব সহজ বলে মনে হচ্ছে:

>>> hash = "355879ACB6"
>>> hash = hash[:4] + '-' + hash[4:]
>>> print hash
3558-79ACB6

তবে আপনি যদি কোনও ফাংশনের মতো কিছু পছন্দ করেন তবে এটি করুন:

def insert_dash(string, index):
    return string[:index] + '-' + string[index:]

print insert_dash("355879ACB6", 5)

26

যেহেতু স্ট্রিংগুলি অপরিবর্তনীয় এগুলির আর একটি উপায় হ'ল স্ট্রিংটিকে একটি তালিকায় পরিণত করা, যা পরে কোনও কাটাকাটি কৌশল ছাড়াই সূচিযুক্ত এবং সংশোধন করা যেতে পারে। তবে তালিকাটি স্ট্রিংয়ে ফিরে পেতে আপনাকে .join()খালি স্ট্রিং ব্যবহার করতে হবে ।

>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'

পারফরম্যান্সের তুলনায় এটি কীভাবে তুলনা করে তা আমি নিশ্চিত নই, তবে আমি মনে করি এটি অন্যান্য সমাধানের চেয়ে চোখের চেয়ে সহজ। ;-)


7

এটি সম্পাদন করার জন্য সহজ কাজ:

def insert_str(string, str_to_insert, index):
    return string[:index] + str_to_insert + string[index:]

5

পাইথনের একটি নির্দিষ্ট অবস্থানে স্ট্রিং যুক্ত করতে আমি খুব দরকারী পদ্ধতি তৈরি করেছি :

def insertChar(mystring, position, chartoinsert ):
    longi = len(mystring)
    mystring   =  mystring[:position] + chartoinsert + mystring[position:] 
    return mystring  

উদাহরণ স্বরূপ:

a = "Jorgesys was here!"

def insertChar(mystring, position, chartoinsert ):
    longi = len(mystring)
    mystring   =  mystring[:position] + chartoinsert + mystring[position:] 
    return mystring   

#Inserting some characters with a defined position:    
print(insertChar(a,0, '-'))    
print(insertChar(a,9, '@'))    
print(insertChar(a,14, '%'))   

আমাদের একটি আউটপুট হিসাবে থাকবে:

-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!

8
আপনি কেন স্ট্রিংয়ের দৈর্ঘ্য গণনা করেন?
ইয়াতসি

2
হতে পারে তিনি সূচকটি স্ট্রিংয়ের দৈর্ঘ্যের চেয়ে কম দেখতে চেয়েছিলেন ... এবং তারপরে ভুলে গিয়েছিলেন।
sce

পাইথন প্রচলিতভাবে উটের ক্ষেত্রে নয়, ফাংশন নামের জন্য আন্ডারস্কোর কেস ব্যবহার করে।
মাইকেল বেটস

2

আমি মনে করি উপরের উত্তরগুলি ঠিক আছে, তবে আমি ব্যাখ্যা করব যে তাদের কিছু অপ্রত্যাশিত-তবে-পার্শ্ব প্রতিক্রিয়া রয়েছে ...

def insert(string_s, insert_s, pos_i=0):
    return string_s[:pos_i] + insert_s + string_s[pos_i:]

যদি সূচক pos_i খুব ছোট হয় (খুব নেতিবাচক) তবে stringোকানো স্ট্রিংটি চাপ দেওয়া হয়ে যায়। যদি খুব দীর্ঘ হয় তবে sertোকানো স্ট্রিং যুক্ত হয়ে যায়। যদি pos_i -len (স্ট্রিং_এস) এবং + লেন (স্ট্রিং_এস) - 1 এর মধ্যে থাকে তবে সন্নিবেশ স্ট্রিংটি সঠিক জায়গায় getsোকানো হবে।


0

পাইথন ৩.6++ এফ স্ট্রিং ব্যবহার করে:

mys = '1362511338314'
f"{mys[:10]}_{mys[10:]}"

দেয়

'1362511338_314'

-3

আপনি যদি অনেক সন্নিবেশ চান

from rope.base.codeanalyze import ChangeCollector

c = ChangeCollector(code)
c.add_change(5, 5, '<span style="background-color:#339999;">')
c.add_change(10, 10, '</span>')
rend_code = c.get_changed()

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