如何从列表中的某些位置更改字符串

时间:2014-05-19 18:25:15

标签: python python-2.7

我想知道如果字符串位于列表中显示的位置,如何对该字符串执行某些操作。让我更好地解释自己。假设你有一个清单:

positionList = [0,3,6]

现在说你有一个字符串:

exampleString = "Here is a string!"

如果字符串中的字符位于列表中的位置,我怎么能说“例如,'H'位于0位置,所以说'H'位于在positionList中“为它做点什么。”

感谢您的时间。如果我不清楚,请告诉我。请注意我使用的是Python 2.7。

编辑 - 看来我不够清楚,道歉!

我将“H”与0关联的原因是因为如果枚举它,它在字符串中的位置0,如下所示:

我是一个人!

0 1 2 3 4 5 6 7 8 9 101112131415

在这里我们可以看到“Here”中的“H”位于位置0,“is”中的“i”位于位置5,依此类推。

我想知道如何制作如上所述的循环,虽然这根本不是真正的程序语法,但我认为它证明了我的意思:

loop through positions of each character in enumerated string:

      if position is equal to a number in the positionList (i.e. "H" is at 0, and since 0 is in positionList, it would count.):

          Do something to that character (i.e. change its color, make it bold, etc. I don't need this part explained so it doesn't really matter.)

如果我不清楚,请告诉我。再次,我为此道歉。

2 个答案:

答案 0 :(得分:1)

您无法更改原始字符串,您可能只是创建了另一个字符串:

pos = [0, 3, 6]
str = 'Here is a string'

def do_something( a ) :
    return a.upper()

new_string = ''.join( [do_something(j) if i in pos else j for i,j in enumerate(str)] )

print new_string

' HerE是一个字符串!'

答案 1 :(得分:0)

字符串在Python中是不可变的,因此要进行更改,您必须先复制它,并且必须在完成更改后复制回来。例如:

 exampleString = "Here is a string!"
 positionList = [0,3,6]

 import array
 a = array.array('c', exampleString)
 for i in positionList:
   a[i] = a[i].upper()
 exampleString = a.tostring()
 print exampleString