문자열에서 문자 인스턴스 바꾸기
세미콜론(i-지정된 위치)을 콜론으로 바꾸기만 하는 이 간단한 코드는 작동하지 않습니다.
for i in range(0,len(line)):
if (line[i]==";" and i in rightindexarray):
line[i]=":"
오류가 발생합니다.
line[i]=":"
TypeError: 'str' object does not support item assignment
세미콜론을 콜론으로 대체하려면 어떻게 해야 합니까?대체 기능은 인덱스를 사용하지 않으므로 대체를 사용할 수 없습니다. 교체하지 않을 세미콜론이 있을 수 있습니다.
예
문자열에는 "하이더!"; 안녕하세요;!와 같은 세미콜론이 얼마든지 있을 수 있습니다.;"
대체할 항목을 알고 있습니다(해당 항목의 인덱스가 문자열에 있습니다).인덱스를 사용할 수 없기 때문에 바꾸기를 사용할 수 없습니다.
python의 문자열은 불변이므로 목록으로 처리하고 인덱스에 할당할 수 없습니다.
대신 사용:
line = line.replace(';', ':')
특정 세미콜론만 교체해야 하는 경우 보다 구체적으로 설명해야 합니다.슬라이싱을 사용하여 대체할 문자열의 섹션을 분리할 수 있습니다.
line = line[:10].replace(';', ':') + line[10:]
문자열의 처음 10자에 있는 모든 세미콜론을 대체합니다.
사용하지 않으려면 아래의 작업을 수행하여 주어진 인덱스에서 해당 문자로 대체할 수 있습니다..replace()
word = 'python'
index = 4
char = 'i'
word = word[:index] + char + word[index + 1:]
print word
o/p: pythin
문자열을 목록으로 바꾼 다음 문자를 개별적으로 변경할 수 있습니다.그러면 당신은 그것을 다시 합칠 수 있습니다..join
:
s = 'a;b;c;d'
slist = list(s)
for i, c in enumerate(slist):
if slist[i] == ';' and 0 <= i <= 3: # only replaces semicolons in the first part of the text
slist[i] = ':'
s = ''.join(slist)
print s # prints a:b:c;d
단일 세미콜론을 바꾸려는 경우:
for i in range(0,len(line)):
if (line[i]==";"):
line = line[:i] + ":" + line[i+1:]
하지만 테스트해 본 적은 없습니다.
단순히 문자열의 문자에 값을 할당할 수 없습니다.특정 문자의 값을 바꾸려면 다음 방법을 사용합니다.
name = "India"
result=name .replace("d",'*')
출력: In*ia
또한 첫 번째 문자를 제외한 모든 첫 번째 문자에 대해 *로 대체하려면 예를 들어 string = babble output = ba**le
코드:
name = "babble"
front= name [0:1]
fromSecondCharacter = name [1:]
back=fromSecondCharacter.replace(front,'*')
return front+back
이것은 조금 더 일반적인 사례를 다루어야 하지만, 당신은 당신의 목적에 맞게 그것을 사용자 정의할 수 있어야 합니다.
def selectiveReplace(myStr):
answer = []
for index,char in enumerate(myStr):
if char == ';':
if index%2 == 1: # replace ';' in even indices with ":"
answer.append(":")
else:
answer.append("!") # replace ';' in odd indices with "!"
else:
answer.append(char)
return ''.join(answer)
별도의 목록을 만들지 않고 문자열에 .replace() 메서드를 효과적으로 사용하려면 예를 들어 공백이 있는 문자열을 포함하는 목록 사용자 이름을 보십시오. 공백을 각 사용자 이름 문자열에 밑줄로 바꾸려고 합니다.
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []
각 사용자 이름의 공백을 대체하기 위해 파이썬에서 범위 함수를 사용하는 것을 고려합니다.
for name in names:
usernames.append(name.lower().replace(' ', '_'))
print(usernames)
또는 하나의 목록을 사용하려는 경우:
for user in range(len(names)):
names[user] = names[user].lower().replace(' ', '_')
print(names)
이거 어때:
sentence = 'After 1500 years of that thinking surpressed'
sentence = sentence.lower()
def removeLetter(text,char):
result = ''
for c in text:
if c != char:
result += c
return text.replace(char,'*')
text = removeLetter(sentence,'a')
변수 'n'에 지정된 인덱스 값으로 대체하는 경우 다음을 시도합니다.
def missing_char(str, n):
str=str.replace(str[n],":")
return str
특정 인덱스에서 문자를 대체하는 기능은 다음과 같습니다.
def replace_char(s , n , c):
n-=1
s = s[0:n] + s[n:n+1].replace(s[n] , c) + s[n+1:]
return s
여기서 s는 문자열, n은 인덱스, c는 문자입니다.
특정 인스턴스에서 문자를 바꾸거나 문자열을 바꾸기 위해 이 메서드를 작성했습니다.instance는 0에서 시작합니다(선택 사항 inst 인수를 1로 변경하고 test_instance 변수를 1로 변경하면 쉽게 1로 변경할 수 있습니다).
def replace_instance(some_word, str_to_replace, new_str='', inst=0):
return_word = ''
char_index, test_instance = 0, 0
while char_index < len(some_word):
test_str = some_word[char_index: char_index + len(str_to_replace)]
if test_str == str_to_replace:
if test_instance == inst:
return_word = some_word[:char_index] + new_str + some_word[char_index + len(str_to_replace):]
break
else:
test_instance += 1
char_index += 1
return return_word
다음을 수행할 수 있습니다.
string = "this; is a; sample; ; python code;!;" #your desire string
result = ""
for i in range(len(string)):
s = string[i]
if (s == ";" and i in [4, 18, 20]): #insert your desire list
s = ":"
result = result + s
print(result)
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []
for i in names:
if " " in i:
i = i.replace(" ", "_")
print(i)
출력 : Joey_Tribbiani Monica_Geller Chandler_Bing Phoebe_Buffay
제 문제는 숫자 목록이 있다는 것이었고, 그 숫자의 일부만 바꾸고 싶어서 이렇게 했습니다.
original_list = ['08113', '09106', '19066', '17056', '17063', '17053']
# With this part I achieve my goal
cves_mod = []
for i in range(0,len(res_list)):
cves_mod.append(res_list[i].replace(res_list[i][2:], '999'))
cves_mod
# Result
cves_mod
['08999', '09999', '19999', '17999', '17999', '17999']
훨씬 더 단순합니다.
input = "a:b:c:d"
output =''
for c in input:
if c==':':
output +='/'
else:
output+=c
print(output)
출력: a/b/c/d
나는 대신 이것을 2 in 1로 사용하려고 했습니다.
usernames = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
# write your for loop here
for user in range(0,len(usernames)):
usernames[user] = usernames[user].lower().replace(' ', '_')
print(usernames)
특정 인덱스에서 문자를 더 깨끗하게 바꿀 수 있는 방법
def replace_char(str , index , c):
return str[:index]+c+str[index+1:]
언급URL : https://stackoverflow.com/questions/12723751/replacing-instances-of-a-character-in-a-string
'programing' 카테고리의 다른 글
여러 기준과 특정 순서를 가진 특정 열에 의한 구별되는 행 (0) | 2023.06.14 |
---|---|
TypeScript에서 불투명 유형을 정의하는 방법은 무엇입니까? (0) | 2023.06.14 |
왜 클랑은 "||" 안에 "&"이라고 경고합니까? (0) | 2023.06.14 |
문서의 전체 텍스트 범위를 가져오기 위한 VS 코드 확장 API? (0) | 2023.06.14 |
레일에서 STI 하위 클래스의 경로를 처리하는 모범 사례 (0) | 2023.06.14 |