如何将列表格式化为字符串?

2024-05-02 14:40:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python格式化一个字符串,它将参数作为名称列表中的项。 关键是,我想打印所有带有双引号和反斜杠的列表项,并且一个接一个地打印在同一个字符串中。 代码是:

list_names=['Alex', 'John', 'Joseph J']
String_to_pring='Hi my name is (\\"%s\\")'%(list_names)

输出应如下所示:

^{pr2}$

但是,我总是这样:

'Hi my names is (\"['Alex','John','Joseph J']\")'

我甚至尝试过使用.format()json.dumps(),但结果还是一样。在

有没有任何方法可以打印所需的输出,或者一次只能打印每个列表项?在


Tags: 字符串名称列表参数namesismyhi
3条回答

在不改变代码的情况下,只需格式化转换为元组的列表的repr表示。在

# proper way - this is what you actually want
list_names = ['Alex', 'John', 'Joseph J']
string_to_print = 'Hi my name is %s' % (repr(tuple(list_names)))
 
print(string_to_print)
# Hi my name is ('Alex', 'John', 'Joseph J')

如果要获得精确的输出,只需执行一些字符串替换:

^{pr2}$

如果您试图将string_to_print传递到其他地方,请先尝试正确的方法,它可能对您有效。


如果您足够注意,您会发现前面的“不正确的方式”包含一个小错误,请尝试将"Alex's house"添加到list_names中,输出如下所示:

Hi my name is (\"Alex\", \"John\", \"Joseph J\", "Alex\"s house")

为了解决这个bug,您需要一种更好的替换方法,使用re.sub()。在

^{4}$

但如果在使用过程中不会发生这种情况,我建议继续使用“不恰当的方式”,因为它简单得多。在

这是使用^{}^{}的一种方法:

list_names = ['Alex', 'John', 'Joseph J']
String_to_pring='Hi my name is (\\"{}\\")'.format('\\",\\"'.join(i for i in list_names))

# Hi my name is (\"Alex\",\"John\",\"Joseph J\")

没有将列表格式化为人类友好字符串的功能,您必须自己格式化列表:

names = ",".join(r'\"{}\"'.format(name) for name in list_names)
print(names)
#\"Alex\",\"John\",\"Joseph J\"
print('Hi my name is ({})'.format(names))
#Hi my name is (\"Alex\",\"John\",\"Joseph J\")

相关问题 更多 >