有没有办法解释这个简单for循环中的标点符号

2024-06-09 18:24:21 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我正在创建一个代码,其中将选择一首随机歌曲,并打印每个单词的首字母以及艺术家的姓名,用户必须尝试猜测歌曲名称。我想让这段代码能够解释像撇号这样的标点符号

例如:

Currently output - "I__ A B_______ - Smash Mouth"

Expected output - "I'_ A B_______ - Smash Mouth".

有人能告诉我一个简单的方法吗

我目前的代码如下:

print(' '.join(x[0] + '_' * (len(x) - 1) for x in string.split()))

Tags: 方法代码用户output歌曲单词expected姓名
2条回答

只能使用regular expressions替换字母。使用^{}将字母替换为'_'

>>> import re
>>> s = "I'm A Believer"
>>> print(' '.join(x[0] + re.sub("[a-zA-Z]", '_', x[1:]) for x in s.split()))
I'_ A B_______

一个更有趣的例子:

>>> s = "Hello, I love you! - Don't you?"
>>> print(' '.join(x[0] + re.sub("[a-zA-Z]", '_', x[1:]) for x in s.split()))
H____, I l___ y__! - D__'_ y__?

使用re可以匹配所有

  • 字母[a-zA-Z]
  • 前面没有空格(?<! )

后者被称为“反向查找断言”:

import re
s = "I'm A Believer"
s[0] + re.sub(r'(?<! )[a-zA-Z]', '.', s[1:])

# I'. A B.......

相关问题 更多 >