为了账号安全,请及时绑定邮箱和手机立即绑定

在python中,不能删除句号'.'

在python中,不能删除句号'.'

慕虎7371278 2021-11-30 16:40:24
试图弄清楚如何从我的输出中删除句点。作业的正确答案是:WA。EA。人工智能。应收账款。VI 我的输出是:WA。EA。人工智能。应收账款。六、我试过使用 rstrip 删除 . 从输出,但这不起作用。感谢这位新手 Python 程序员的一些见解。stopwords = ['to', 'a', 'for', 'by', 'an', 'am', 'the', 'so', 'it', 'and', 'The']sent = "The water earth and air are vital"s_sent=sent.split()acro = ''for word in s_sent:    if word not in stopwords:       acro=acro + str.upper(word[:2])+". "                   acro=acro.rstrip('.')print(acro)
查看完整描述

3 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

您join可以免于处理剩余空间的麻烦和 '.'


stopwords = ['to', 'a', 'for', 'by', 'an', 'am', 'the', 

'so', 'it', 'and', 'The']

sent = "The water earth and air are vital"

s_sent=sent.split()

acro = []

for word in s_sent:

    if word not in stopwords:

       acro.append( str.upper(word[:2]))

print('. '.join(acro))

输出


WA. EA. AI. AR. VI

另一种简单的方法是引入一个标志来检查第一个值,然后巧妙地附加'. '在最后一个值的末尾。这样你就不会有多余的尾随字符


smart_flag = True

acro = ''

for word in s_sent:

    if word not in stopwords:

        if smart_flag:

            acro=acro+str.upper(word[:2])

            smart_flag=False

        else:

            acro=acro +". " + str.upper(word[:2])           


print(acro)

只是为了完整性acro.rstrip(' .'))将删除您传入的任何字符。我的意思是它将删除'. '以及' .'


查看完整回答
反对 回复 2021-11-30
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

这也可以缩短为:


stopwords = ['to', 'a', 'for', 'by', 'an', 'am', 'the', 'so', 'it', 'and', 'The']

sent = "The water earth and air are vital"


acro = '. '.join(word[:2].upper() for word in sent.split() if word not in stopwords)

print(acro)

输出:


WA. EA. AI. AR. VI

更新:


但是,正如@mad_ 指出的那样,join在这种情况下想要创建一个字符串,首先是正确的长度,然后是正确的内容。但是要知道正确的长度,它希望找到要连接的所有组件的长度,因此将列表作为其参数意味着它具有大小,而我对生成器的原始答案直到它已经用尽了。


所以,更好的是:


acro = '. '.join([word[:2].upper() for word in sent.split() if word not in stopwords])


查看完整回答
反对 回复 2021-11-30
?
慕村225694

TA贡献1880条经验 获得超4个赞

这是因为您输入的最后一个字符acro是空格字符。你必须要么rstrip(". ")rstrip(" .")


查看完整回答
反对 回复 2021-11-30
  • 3 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信