0

我有一个多行打印的字符串值。我使用三个单/双引号来分配字符串值

artist = """
       Mariah
       Carey
       """
 name = 'My all'
 realeased_year = 1997
 genre = 'Latin'
 duration_seconds = 231

print(f'{artist}(full name has {len(artist.strip().replace(" ", ""))} characters) and her song \'{name}\' was released in {realeased_year + 1}')

在此处输入图像描述 它输出错误的字符数:12

但是,当我在一行中分配一个字符串值时

artist = 'Mariah Carey'

我有正确的字符数 11 在此处输入图像描述

是否可以在不使用正则表达式的情况下从多行字符串值中删除所有空格(前导、中间和尾随)

4

2 回答 2

2

str.split()在空格上分割一个字符串,这样你就可以这样做:

>>> artist = """
...        Mariah
...        Carey
...        """
>>> ' '.join(artist.split())
'Mariah Carey'

这会将字符串拆分为单词列表。然后将这些单词与单个空格分隔符连接起来。

我假设您希望保留一个字间空格,但是,如果您想摆脱所有空格,请使用空字符串连接:

>>> ''.join(artist.split())
'MariahCarey'

修改你的显示字符串:

>>> print(f'{artist}(full name has {len("".join(artist.split()))} characters)')

   Mariah
   Carey
   (full name has 11 characters)
于 2021-01-05T02:45:09.220 回答
1

当您使用三引号并使用 enter 分隔行时,python 会插入\n字符,该字符也会添加到字符总数中。所以在下面一行

print(f'{artist}(full name has {len(artist.strip().replace(" ", ""))} characters) and her song \'{name}\' was released in {realeased_year + 1}')

在替换函数中而不是在" "使用"\n"中。

于 2021-01-05T02:51:06.890 回答