Python:创建删除线/删除线/重击字符串类型

时间:2014-08-11 13:28:08

标签: python python-3.x

我希望在创建一个迭代字符串并将每个字符与删除线字符(\ u0336)组合在一起的函数时提供一些帮助。输出是原始字符串的删除版本。 像这样。

类似的东西。

def strike(text):
    i = 0
    new_text = ''
    while i < len(text):
        new_text = new_text + (text[i] + u'\u0336')
        i = i + 1
    return(new_text)

到目前为止,我只能连接而不是结合。

3 个答案:

答案 0 :(得分:11)

怎么样:

from itertools import repeat, chain

''.join(chain.from_iterable(zip(text, repeat('\u0336'))))

甚至更简单,

'\u0336'.join(text) + '\u0336'

答案 1 :(得分:7)

def strike(text):
    result = ''
    for c in text:
        result = result + c + '\u0336'
    return result

很酷的效果。

答案 2 :(得分:3)

<强>被修改

正如roippi指出的那样,到目前为止其他答案实际上是正确的,下面这个是错误的。将它留在这里,以防其他人得到与我相同的错误想法。


到目前为止,其他答案都是错误的 - 它们不会删除字符串的第一个字符。试试这个:

def strike(text):
    return ''.join([u'\u0336{}'.format(c) for c in text])

>>> print(strike('this should do the trick'))
'̶t̶h̶i̶s̶ ̶s̶h̶o̶u̶l̶d̶ ̶d̶o̶ ̶t̶h̶e̶ ̶t̶r̶i̶c̶k'

这适用于Python 2和Python 3。