连接字符串的每两个字符

coo*_*490 1 python string slice

我是Python的新手.我有一个字符串:

food = "popcorns"
beverage = "water"
Run Code Online (Sandbox Code Playgroud)

如何创建一个连接每两个字符并跳过第三个字符的新字符串?像这样:

PO-CO-NS和WA-ER

这样新的字符串就变成了

new_food = pocons
new_beverage = waer
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用这种连接从无限字符串构建一个新的100个字符串.这是我到目前为止所拥有的:

infinite_string
for i in range(0, 32):
    new_string += infinite_string[i: i + 1: 3]
Run Code Online (Sandbox Code Playgroud)

我知道这不对.任何帮助表示赞赏

Mar*_*ers 5

你可以使用:

''.join([c for i, c in enumerate(inputstring, 1) if i % 3])
Run Code Online (Sandbox Code Playgroud)

演示:

>>> food = "popcorns"
>>> beverage = "water"
>>> ''.join([c for i, c in enumerate(food, 1) if i % 3])
'pocons'
>>> ''.join([c for i, c in enumerate(beverage, 1) if i % 3])
'waer'
Run Code Online (Sandbox Code Playgroud)

另一种方法是在首次创建列表后删除每个第三个字符:

characters = list(inputstring)
del characters[2::3]
result = ''.join(characters)
Run Code Online (Sandbox Code Playgroud)

演示:

>>> characters = list(food)
>>> del characters[2::3]
>>> ''.join(characters)
'pocons'
Run Code Online (Sandbox Code Playgroud)


fal*_*tru 5

使用正则表达式:

>>> import re
>>> re.sub('(..).', r'\1', "popcorns")
'pocons'
>>> re.sub('(..).', r'\1', "water")
'waer'
Run Code Online (Sandbox Code Playgroud)