无法格式化打印字符串

时间:2018-11-19 06:08:54

标签: python python-3.x printing format

如何将下面的代码从较旧/可读性较差的%s%(值)打印转换为f'{value}较新的格式方法。是否可以循环使用python中的.format?

data = {'123':'asd','234':'sdf'}
string = ''.join(' %s="%s"' % (key, value) for key,value in data.items())
print(string)

输出:

123="asd" 234="sdf"

3 个答案:

答案 0 :(得分:1)

是的,有可能:

>>> data = {'123':'asd','234':'sdf'}
>>> string = ''.join(f' {key}="{value}"' for key,value in data.items())
>>> string
' 123="asd" 234="sdf"'

答案 1 :(得分:0)

您想将%样式的字符串格式转换为新的f字符串样式的IIUC:

print(' '.join(f'{k}="{v}"' for k,v in data.items())

输出:

'123="asd" 234="sdf"'

答案 2 :(得分:0)

在大多数情况下,它们是等效的。 Code on repl.it

data = {'123':'asd','234':'sdf'}

print("-- % --")
string1 = ''.join(' %s="%s"' % (key, value) for key,value in data.items())
print(string1)

print("\n-- .format() --")
string2 = ''.join([' {}="{}"'.format(key, value) for key, value in data.items()])
print(string2)

print("\n-- f'string' --")
string3 = ''.join([f' {key}="{value}"' for key, value in data.items()])
print(string3)

出局:

-- % --
 123="asd" 234="sdf"

-- .format() --
 123="asd" 234="sdf"

-- f'string' --
 123="asd" 234="sdf"