我希望在创建一个迭代字符串并将每个字符与删除线字符(\ 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)
到目前为止,我只能连接而不是结合。
答案 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。