字符串格式化为带引号的行
String formatting into quoted lines
我有一个列表:
l = ['str1', 'str2', 'str3', 'str4']
我需要将其存储在一个变量中,以便将其打印为:
'str1\n'
'str2\n'
'str3\n'
'str4'
包括单引号和 \n
.
现在我在做:
input_string = "\'" + l[0] + "\n\'\n\'" + l[1] + "\n\'\n\'" + l[2] + "\n\'\n\'" + l[3] + "\'"
print(input_string)
但是有没有更漂亮的方法使用 str.format()
我们不需要转义 '\n'
?
您可以只添加一个换行符,然后使用 repr
打印:
In [703]: for x in [x + '\n' if i != len(l) - 1 else x for i, x in enumerate(l)]:
...: print(repr(x))
...:
'str1\n'
'str2\n'
'str3\n'
'str4'
这不涉及转义换行符(这似乎是您想要的),但我建议转义它们。
存储到变量将涉及将 repr
存储在列表本身内,然后调用 str.join
:
In [708]: string = '\n'.join([repr(x + '\n') if i != len(l) - 1 else repr(x) for i, x in enumerate(l)])
In [709]: print(string)
'str1\n'
'str2\n'
'str3\n'
'str4'
只需转义换行符或使用 r'...'
原始字符串文字以防止将其解释为转义序列。您可以使用循环来处理除最后添加转义换行符之外的所有内容:
'\n'.join([r"'{}\n'".format(e) for e in l[:-1]] + ["'{}'".format(l[-1])])
演示:
>>> l = ['str1', 'str2', 'str3', 'str4']
>>> '\n'.join([r"'{}\n'".format(e) for e in l[:-1]] + ["'{}'".format(l[-1])])
"'str1\n'\n'str2\n'\n'str3\n'\n'str4'"
>>> print(_)
'str1\n'
'str2\n'
'str3\n'
'str4'
我怀疑你真的只是想显示 Python 字符串,所以它们的表示:
'\n'.join([repr(e + '\n') for e in l[:-1]] + [repr(l[-1])])
对于您的简化输入,这会产生与上述表达式相同的输出:
>>> '\n'.join([repr(e + '\n') for e in l[:-1]] + [repr(l[-1])])
"'str1\n'\n'str2\n'\n'str3\n'\n'str4'"
>>> print(_)
'str1\n'
'str2\n'
'str3\n'
'str4'
我有一个列表:
l = ['str1', 'str2', 'str3', 'str4']
我需要将其存储在一个变量中,以便将其打印为:
'str1\n'
'str2\n'
'str3\n'
'str4'
包括单引号和 \n
.
现在我在做:
input_string = "\'" + l[0] + "\n\'\n\'" + l[1] + "\n\'\n\'" + l[2] + "\n\'\n\'" + l[3] + "\'"
print(input_string)
但是有没有更漂亮的方法使用 str.format()
我们不需要转义 '\n'
?
您可以只添加一个换行符,然后使用 repr
打印:
In [703]: for x in [x + '\n' if i != len(l) - 1 else x for i, x in enumerate(l)]:
...: print(repr(x))
...:
'str1\n'
'str2\n'
'str3\n'
'str4'
这不涉及转义换行符(这似乎是您想要的),但我建议转义它们。
存储到变量将涉及将 repr
存储在列表本身内,然后调用 str.join
:
In [708]: string = '\n'.join([repr(x + '\n') if i != len(l) - 1 else repr(x) for i, x in enumerate(l)])
In [709]: print(string)
'str1\n'
'str2\n'
'str3\n'
'str4'
只需转义换行符或使用 r'...'
原始字符串文字以防止将其解释为转义序列。您可以使用循环来处理除最后添加转义换行符之外的所有内容:
'\n'.join([r"'{}\n'".format(e) for e in l[:-1]] + ["'{}'".format(l[-1])])
演示:
>>> l = ['str1', 'str2', 'str3', 'str4']
>>> '\n'.join([r"'{}\n'".format(e) for e in l[:-1]] + ["'{}'".format(l[-1])])
"'str1\n'\n'str2\n'\n'str3\n'\n'str4'"
>>> print(_)
'str1\n'
'str2\n'
'str3\n'
'str4'
我怀疑你真的只是想显示 Python 字符串,所以它们的表示:
'\n'.join([repr(e + '\n') for e in l[:-1]] + [repr(l[-1])])
对于您的简化输入,这会产生与上述表达式相同的输出:
>>> '\n'.join([repr(e + '\n') for e in l[:-1]] + [repr(l[-1])])
"'str1\n'\n'str2\n'\n'str3\n'\n'str4'"
>>> print(_)
'str1\n'
'str2\n'
'str3\n'
'str4'