[python] 파이썬에서 특정 위치에 문자열 추가

파이썬에서 문자열의 특정 위치에 값을 삽입하는 데 사용할 수있는 함수가 있습니까?

이 같은:

"3655879ACB6"다음 위치에 4 추가 "-""3655-879ACB6"



답변

아니요. 파이썬 문자열은 변경할 수 없습니다.

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

그러나 문자가 삽입 된 새 문자열을 만들 수 있습니다.

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


답변

이것은 매우 쉬운 것 같습니다 :

>>> 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)


답변

문자열을 변경할 수없는 또 다른 방법은 문자열을 목록으로 바꾸는 것입니다. 그런 다음 슬라이싱 트릭없이 색인화하고 수정할 수 있습니다. 그러나 목록을 문자열로 다시 가져 오려면 .join()빈 문자열 을 사용해야 합니다.

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

이것이 성능과 비교하여 어떻게 확신 할 수는 없지만 다른 솔루션보다 눈이 더 쉽다고 생각합니다. 😉


답변

이것을 달성하는 간단한 기능 :

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


답변

파이썬에서 특정 위치에 문자열을 추가 하는 매우 유용한 방법을 만들었습니다 .

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!


답변

위의 답변은 괜찮다고 생각하지만 예기치 않은 부작용이 있다고 설명합니다.

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

색인 pos_i가 매우 작 으면 (너무 음수) 삽입 문자열이 앞에 붙습니다. 너무 길면 삽입 문자열이 추가됩니다. pos_i가 -len (string_s)와 + len (string_s)-1 사이에 있으면 삽입 문자열이 올바른 위치에 삽입됩니다.


답변

f-string을 사용하는 Python 3.6 이상 :

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

준다

'1362511338_314'