例如,如果我有
>>> name = f"{os.path.splitext(os.path.basename('/some/long/path/I/donot/need/to/some/config.bs'))[0]}.yaml"
'config.yaml'
因为实际文本非常少,所以在79个字符之前没有好的地方可以打破这一行。看来你不能这样做:
name = f"{os.path.splitext(os.path.basename(
'/some/long/path/I/donot/need/to/some/config.bs'))[0]}.yaml"
>>> f"{os.path.splitext(os.path.basename(
File "<stdin>", line 1
f"{os.path.splitext(os.path.basename(
^
SyntaxError: EOL while scanning string literal
我唯一能做的就是拆分命令,例如:
>>> fname = '/some/long/path/I/donot/need/to/some/config.bs'
>>> tempname = os.path.splitext(os.path.basename(
... fname))[0]
>>> name = f'{tempname}.yaml'
>>> name
'config.yaml'
是否有其他选项来拆分f-string?
答案 0 :(得分:4)
是的,您仍然可以使用三引号字符串并以您认为最佳的方式将其拆分。
表达式中的前导和尾随空格被忽略
为了便于阅读,忽略表达式中的前导和尾随空格。这是在评估之前将表达式括在括号中的副产品。
因此删除前后的任何空格,括号内的其他空格(例如函数调用)和方形/花括号也因同样的原因没有区别。所以这个:
$myInfoMsg = self::class . ": New User {$user['name']} created";
仍应产生预期结果。以您认为最好的方式格式化它。
虽然有人可以成功地争辩说你可以通过其他几个步骤来减少一切:
name = f"""{
os.path.splitext(
os.path.basename('/some/long/path/I/donot/need/to/some/config.bs')
)[0]}.yaml"""
最终选择是你的。