如何使用变量 .format 写入文件?

How to write to the file with a variable .format?

我想将两个字符串写入一个文件,中间有可变的空格。这是我写的代码:

width = 6
with open(out_file, 'a') as file:
    file.write("{:width}{:width}\n".format('a', 'b'))

但我从中得到 ValueError: Invalid conversion specification。我希望它在文件中的一行中写入字符 ab,中间有 6 个空格。

我正在使用 python 2.

有点难看,但你可以这样做。使用 {{}} 你可以输入一个文字花括号,这样你就可以用可变宽度格式化你的格式字符串。

width = 6

format_str = "{{:{}}}{{:{}}}\n".format(width, width) #This makes the string "{:width}{:width}" with a variable width.


with open(out_file, a) as file:
    file.write(format_str.format('a','b'))

编辑:如果你想将这种类型的可变宽度模式应用到代码中使用的任何模式,你可以使用这个函数:

import re
def variable_width_pattern(source_pattern, width):
    regex = r"\{(.*?)\}"
    matches = re.findall(regex, source_pattern)
    args = ["{{:{}}}".format(width) for x in range(len(matches))]
    return source_pattern.format(*args)

我用谷歌搜索了一下,找到了 。通过一些更改,我编写了这段代码,我尝试并获得了您想要的输出:

width = 6
with open(out_file, 'a') as file:
    f.write("{1:<{0}}{2}\n".format(width, 'a', 'b'))

一个简单的乘法在这里就可以了 (这里重载了乘法运算符)

width = 6
charector = ' '
with open(out_file, 'a') as file:
    file.write('a' + charector * width + 'b')

您需要稍微更改格式字符串并将 width 作为关键字参数传递给 format() 方法:

width = 6
with open(out_file, 'a') as file:
    file.write("{:{width}}{:{width}}\n".format('a', 'b', width=width))

之后的文件内容:

a     b