Python:格式化包含列表的列表以供打印

3
我正在从事一个将输入转换为 Pig Latin 的项目(是的,我确定你以前从未见过这个...),但是在格式化输出方面遇到了问题。
(对于以下内容,sentence = 一个包含用户输入(短语)拆分的列表,用 phrase.split() 进行拆分。)
sentence.remove(split)
final = map(str,sentence)
print "Final is (before formatting:", final
final = [sentence[0].capitalize()] , sentence[1:]
#finalFormat = ' '.join(final)
print "Final is", str(final).strip('[]')
#print "FinalFormat is", finalFormat
print "In Pig Latin, you said \"", ' '.join(map(str, final)), "\". Oink oink!"

我得到的内容是: "在Pig Latin中,你说了"['第一个单词'] ['第二个单词','第三个单词']"

我要找的内容是: "在Pig Latin中,你说了"第一个单词 第二个单词 第三个单词"。

根据我的调试打印语句,看起来我的问题仍然出现在倒数第五行:

    final = [sentence[0].capitalize()] , sentence[1:]

提前感谢!


你能不能把你的代码剩余部分发布出来? - Blender
由于你在下一行中覆盖了它,因此final = map(str,sentence)这一行也是无关紧要的。 - wim
1个回答

4

请将这一行更改为:

final = sentence[0].capitalize() , sentence[1:]

变成这样:

final = [sentence[0].capitalize()] + sentence[1:]

你正在将一个由字符串和列表组成的元组映射到字符串,而不是列表。
注意:在这里使用单引号将避免“this\””的难看情况。

非常感谢您的快速回复!不幸的是,这要么没有解决我的问题,要么表明我的问题在另一行。输出现在是“在Pig Latin中,您说”['My'] ['ishfay','oodfay']“”(对于输入“my fish food.”)。 - user2113818
不要对final进行map操作,它已经是字符串了,只需使用' '.join即可。 - wim
1
@user2113818:您错过了wim建议的+运算符。在两个列表之间使用逗号会创建一个元组。使用+将它们连接起来。 - Blckknght
Wim和Blckknght,非常感谢你们!我真的非常感激你们两个人的帮助(显然需要检查一下我的眼镜处方)。 - user2113818

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接