gpt4 book ai didi

python - 仅从输出中删除尾随空格

转载 作者:行者123 更新时间:2023-11-28 22:16:48 25 4
gpt4 key购买 nike

我有一项分配给我的家庭作业。基本上问题是:

编写一个程序,可以去除品牌名称并用通用名称替换它们。

下表显示了一些具有通用名称的品牌名称。该映射还作为 BRANDS 字典在您的程序中提供给您。

BRANDS = {
'Velcro': 'hook and loop fastener',
'Kleenex': 'tissues',
'Hoover': 'vacuum',
'Bandaid': 'sticking plaster',
'Thermos': 'vacuum flask',
'Dumpster': 'garbage bin',
'Rollerblade': 'inline skate',
'Asprin': 'acetylsalicylic acid'
}

这是我的代码:

sentence = input('Sentence: ')

sentencelist = sentence.split()
for c in sentencelist:
if c in BRANDS:
d = c.replace(c, BRANDS[c])
print(d, end=' ')
else:
print(c, end=' ')

我的输出:

Sentence: I bought some Velcro shoes.
I bought some hook and loop fastener shoes.

预期输出:

Sentence: I bought some Velcro shoes.
I bought some hook and loop fastener shoes.

它看起来一样,但在我的输出中,在 'shoes.' 之后有一个额外的空格,而这不应该是一个空格。那么如何删除这个空格呢?

我知道你可以做 rstrip()replace() 我试过了,但是当我只需要删除尾随空格时它只会把所有东西混在一起并且不删除任何其他空格。如果用户将品牌名称放在句子中间,而我使用 rstrip(),它会将品牌名称和句子的其余部分连接在一起。

最佳答案

关键是使用字符串的 join 方法为您连接所有内容。例如,要在一堆字符串之间放置一个空格而不在最后一位之后放置空格,请执行

' '.join(bunch_of_strings)

字符串必须位于可迭代对象中,如列表,这样才能正常工作。你可以像这样制作列表:

edited_list = []
for word in sentence_list:
if word in BRANDS:
edited_list.append(BRANDS[word])
else:
edited_list.append(word)

一个更短的选择是

edited_list = [BRANDS.get(word, word) for word in sentence_list]

无论哪种方式,您都可以使用 join 方法组合编辑后的句子:

print(' '.join(edited_list))

这是 Python,你可以在不使用中间列表的情况下将整个事情作为一行完成:

print(' '.join(BRANDS.get(word, word) for word in sentence_list))

最后,您可以使用 splat 表示法在 print 本身中进行连接。在这里,您将列表的每个元素作为单独的参数传递,并使用默认的 sep 参数插入空格:

print(*edited_list)

顺便说一句,d = c.replace(c, BRANDS[c]) 完全等同于 d = BRANDS[c]。由于字符串是不可变的,任何时候你执行 c.replace(c, ...,你只是以一种有点难以辨认的方式返回替换。

关于python - 仅从输出中删除尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51941949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com