[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'