2015-06-11 2 views
0

Я хочу:Python: разместить символы в строке

input: 1x output:1*x 
input: 2x output:2*x 
input: 3x output:3*x 
input: 4x output:4*x 
input: 5x output:5*x 
input: 6x output:6*x 
input: 7x output:7*x 
input: 8x output:8*x 
input: 9x output:9*x 
input:)x output:)*x 
input: x(output:x*(

Я пытался сделать это с помощью .Привернуть, но это слишком длительным и тяжелым. Могу ли я сделать это любым другим способом?

+1

's [0] + "*" + s [1]' –

ответ

0

Строки Python неизменяемы. Вы не можете изменять строку на месте. При изменении и присваивании ему то же имя, что и исходная строка, вы просто создаете новую строку, содержащую некоторое содержимое исходной строки.

Чтобы решить вашу проблему, вы можете сделать это.

>>> my_input = '1x' 
>>> output = my_input[0] + '*' + my_input[1] 

>>> output 
1*x 

Здесь вы вставляете '*' между индексом 0 и индексом 1 входной строки.

Чтобы понять неизменность строк, давайте рассмотрим некоторые примеры.

Например 1:

>>> string1 = 'aacc' 
>>> string2 = string1 

Теперь мы вставим 'bb' между строкой.

>>> string1 = string1[:2] + 'bb' + string1[2:] 

>>> string1 
aabbcc 

>>> string2 
aacc 

Здесь string2 все еще относится к старому string1. Фактически вы не изменили код string1, но создали новый строковый объект.

Например 2:

>>> string1 = 'ac' 

Теперь давайте вставить 'b' между ними.

>>> string1[1:1] = 'b'  
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'str' object does not support item assignment 
+0

Спасибо за быстрый ответ .. Это работает для меня. Я использовал 'char_list = ['1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', ') x', 'x ('] для char в char_list: if char в valid_text: valid_text = valid_text.replace (char, (char [0] +' * '+ char [1])) ' –

+0

Прохладно! Но интересно отметить, что '.replace()' вернет копию строки со всеми вхождениями старой подстроки, замененной на new. Если она ссылается где угодно, там она все равно относится к старой строке. –

0
s[0] + "*" + s[1] 
"{0}*{1}".format(*s) 
"{0}*{1:}".format(*s) 
'*'.join(s) 

import re 
re.sub("^(.)", r"\1*", s) 
re.sub("^.", r"\g<0>*", s) 
0
char_list = ['1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', ')x', 'x('] 
for char in char_list: 
    if char in valid_text: 
     valid_text = valid_text.replace(char, (char[0] + '*' + char[1])) 
Смежные вопросы