【问题标题】:Python string manipulation moving a character from one spot to another [duplicate]Python字符串操作将字符从一个位置移动到另一个位置[重复]
【发布时间】:2019-10-04 04:25:25
【问题描述】:

我不太确定为什么这不起作用,但它应该将 C 向右移动 if 。在它的右边。这似乎根本没有改变城市字符串。

import time
city = 'C................R..................'


position = (city.index('C'))

for i in city:
    time.sleep(1)
    if city[position+1] == '.':

        city[position].replace('C','.')
        city[position+1].replace('.','C')

    position = (city.index('C'))

    print(city)

【问题讨论】:

  • 预期输出是什么?
  • 字符串在 python 中是不可变的。

标签: python string


【解决方案1】:

是的,就像@Ruzihm 和@Mark Meyer 提到的那样,字符串的字符不能像列表一样被替换。您必须先将其转换为列表。

但是根据您要解决的问题,我想知道如果您要寻找的只是使“ C”存在,为什么不能简单地写成这样。进入'.C'。还是我误会了什么?

city = 'C................R................C..C'

city = city.replace('C.', '.C')
print(city)
# should output: .C...............R.................C.C

【讨论】:

  • 很好地使用replace
【解决方案2】:

string.replace 不会就地更改字符串。在这和字符串在 python 中不可变的事实之间,我建议使用 city 作为列表,只需索引并分配给您想要更改的字符/字符串。

您可以使用''.join(city) 将列表转换为字符串以进行打印。

总共:

import time
city = 'C................R..................'
city = list(city)


position = city.index('C')

for i in city:
    time.sleep(1)

    if city[position+1] == '.':
        city[position] = '.'
        city[position+1] = 'C'

    position = city.index('C')
    print(''.join(city))

【讨论】:

    【解决方案3】:

    如果您想加入 CR,那么此编辑会有所帮助

    import time
    city = 'C................R..................'
    
    position_C = 0
    
    for i in city:
        time.sleep(1)
        l_city = list(city)
        if l_city[position_C+1] == '.':
            l_city[position_C]="."
            l_city[position_C+1]='C'
    
            city=''.join(l_city)
    
        position_C = (city.index('C'))
    
        print(city)
    

    如果您想超越 R,请告诉我,我会帮助您。 如果您得到了想要的答案,请将答案标记为已接受。

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2017-10-19
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多