如何在python列表中的最后一个字符串项中添加逗号?

我正在用python制作诗歌生成器,目前正在研究如何将诗歌输出给用户。我想这样做,以便输出的每一行后面都会有一个逗号。我以为可以使用.join函数轻松实现这一点,但是它似乎附加在字母上,而不是附加在列表中的字符串的末尾。

line1[-1]=','.join(line1[-1])
print(*line1)
print(*line2)

将输出类似:

Moonlight is w,i,n,t,e,r
The waters scent fallen snow

事后看来,我应该知道join是使用了错误的函数,但是我仍然迷失了。我尝试了.append,但是由于列表中的项目是字符串,因此出现错误消息“'str'对象没有属性'append'。”

我意识到对这一切的另一种解决方法可能是:

print(*line1,",")

但是我正在开发一个函数,该函数将确定正确的标点符号需要是“!”,“,”,“?”还是“-”,所以我真的希望找到可以附加到列表本身中的字符串,而不是在输出打印过程中附加。

hrhhurunhong 回答:如何在python列表中的最后一个字符串项中添加逗号?

只需对字符串使用++=运算符,例如:

trailing_punct = ',' # can be '!','?',etc.

line1 += trailing_punct
# or
line1 = line1 + trailing_punct

+=可用于修改字符串“ in place”(请注意,在幕后,它确实创建了一个新对象并分配给它,因此id(line1)在此操作后将发生更改)

,

您的line1line2似乎是字符串列表,所以我首先假设:

line1 = ["Moonlight","is","winter"]
line2 = ["The","waters","scent","fallen","snow"]

给定多个字符串参数以在单词之间添加空格时,您正在使用print函数的默认行为:print(*line1)等效于调用print(line1[0],line1[1],...)(请参见*args and **kwargs )。

这使得将行分隔符添加到该行的单词列表中是不够的,因为它前面会有一个空格:

print("\n--//--\nUsing print default space between given arguments:")
line_separator = ","
line1.append(line_separator)
print(*line1)
print(*line2)

结果:

--//--
Using print default space between given arguments:
Moonlight is winter,The waters scent fallen snow

要完成的操作可以通过将单词列表连接到单个字符串中,然后将行列表与所需的分隔符连接起来来完成:

print("\n--//--\nPrinting a single string:")
line1_str = ' '.join(line1)
line2_str = ' '.join(line2)
line_separator = ",\n"  # notice the new line \n
lines = line_separator.join([line1_str,line2_str])
print(lines)

结果

--//--
Printing a single string:
Moonlight is winter,The waters scent fallen snow

请考虑使用行列表以方便扩展,并且可能会使用分隔符列表以用于每行。

本文链接:https://www.f2er.com/3128122.html

大家都在问