我想:
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*(
我试过通过.replace这样做,但它太长而且太重了。 我可以用其他方式做到这一点吗?
答案 0 :(得分: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
答案 1 :(得分: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)
答案 2 :(得分: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]))