Это возможно в Python 2 с помощью
execfile("test2.py")
См. документацию для обработки пространств имен, если это важно в вашем случае.
, вам следует рассмотреть возможность использования другого подхода; ваша идея (из того, что я вижу) выглядит не очень чисто.
Строки в python неизменяемы, поэтому вы не можете рассматривать их как список и присваивать индексы.
Вместо этого используйте .replace()
:
line = line.replace(';', ':')
Если вам нужно заменить только определенные точки с запятой, вам нужно быть более конкретным. Вы можете использовать срез, чтобы изолировать секцию строки, которую нужно заменить:
line = line[:10].replace(';', ':') + line[10:]
Это заменит все полуколоны в первых 10 символах строки.
Если вы заменяете значение индекса, указанное в переменной 'n', попробуйте следующее:
def missing_char(str, n):
str=str.replace(str[n],":")
return str
Вы не можете просто назначить значение символу в строке. Используйте этот метод для замены значения определенного символа:
name = "India"
result=name .replace("d",'*')
Вывод: In * ia
Кроме того, если вы хотите заменить say * для всех вхождений первого символа кроме первого символа, например. строка = лепетный вывод = ba ** le
Код:
name = "babble"
front= name [0:1]
fromSecondCharacter = name [1:]
back=fromSecondCharacter.replace(front,'*')
return front+back
Вы можете сделать ниже, чтобы заменить любой символ соответствующим символом в данном индексе, если вы не хотите использовать .replace()
word = 'python'
index = 4
char = 'i'
word = word[:index] + char + word[index + 1:]
print word
o/p: pythin
Это должно охватывать чуть более общий случай, но вы должны быть в состоянии настроить его для своей цели
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)
Надеемся, что это поможет
Как насчет этого:
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')
Поверните строку в список; то вы можете изменить символы в отдельности. Затем вы можете вернуть его вместе с .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:]
, Havent проверил ее, хотя.
line.replace(src,dst)
нет. line[:10].replace(src,dst) + line[10:]
, но в гораздо меньшей степени. Предположим line = ';'*12
. Ваше решение построит новую строку 12 раз. Принятое решение будет делать это один раз.
– inspectorG4dget
4 October 2012 в 18:43