Python:在字符串中放置一个字符

时间:2015-06-11 06:24:59

标签: string python-2.7

我想:

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这样做,但它太长而且太重了。 我可以用其他方式做到这一点吗?

3 个答案:

答案 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]))