可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
This simple code that simply tries to replace semicolons (at i-specified postions) by colons does not work:
for i in range(0,len(line)):
if (line[i]==\";\" and i in rightindexarray):
line[i]=\":\"
It gives the error
line[i]=\":\"
TypeError: \'str\' object does not support item assignment
How can I work around this to replace the semicolons by colons? Using replace does not work as that function takes no index- there might be some semicolons I do not want to replace.
Example
In the string I might have any number of semicolons, eg \"Hei der! ; Hello there ;!;\"
I know which ones I want to replace (I have their index in the string). Using replace does not work as I\'m not able to use an index with it.
回答1:
Strings in python are immutable, so you cannot treat them as a list and assign to indices.
Use .replace()
instead:
line = line.replace(\';\', \':\')
If you need to replace only certain semicolons, you\'ll need to be more specific. You could use slicing to isolate the section of the string to replace in:
line = line[:10].replace(\';\', \':\') + line[10:]
That\'ll replace all semi-colons in the first 10 characters of the string.
回答2:
You can do the below, to replace any char with a respective char at a given index, if you wish not to use .replace()
word = \'python\'
index = 4
char = \'i\'
word = word[:index] + char + word[index + 1:]
print word
o/p: pythin
回答3:
Turn the string into a list; then you can change the characters individually. Then you can put it back together with .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
回答4:
If you want to replace a single semicolon:
for i in range(0,len(line)):
if (line[i]==\";\"):
line = line[:i] + \":\" + line[i+1:]
Havent tested it though.
回答5:
This should cover a slightly more general case, but you should be able to customize it for your purpose
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)
Hope this helps
回答6:
If you are replacing by an index value specified in variable \'n\', then try the below:
def missing_char(str, n):
str=str.replace(str[n],\":\")
return str
回答7:
You cannot simply assign value to a character in the string.
Use this method to replace value of a particular character:
name = \"India\"
result=name .replace(\"d\",\'*\')
Output: In*ia
Also, if you want to replace say * for all the occurrences of the first character except the first character,
eg. string = babble output = ba**le
Code:
name = \"babble\"
front= name [0:1]
fromSecondCharacter = name [1:]
back=fromSecondCharacter.replace(front,\'*\')
return front+back
回答8:
How about this:
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\')
回答9:
To replace a character at a specific index, the function is as follows:
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
where s is a string, n is index and c is a character.