我真的很想深入研究代码风格,从现在开始知道从现在开始使用新风格会更好.
我.format()在我的Python 3.5项目中使用了很多,并且我担心在下一个Python版本中它会被弃用,因为这种新的字符串文字.
>>> name = "Test"
>>> f"My app name is {name}."
'My app name is Test.'
Run Code Online (Sandbox Code Playgroud)
格式化的字符串功能是否完全取代旧的format()?
我理解它基于这样的想法:
简单比复杂更好.
但是,性能问题如何,它们之间是否存在差异?或者它只是一个简单的相同功能的外观?
Python的os模块包含一个特定于平台的行分隔字符串的值,但是文档明确表示在写入文件时不使用它:
在编写以文本模式打开的文件时,不要将os.linesep用作行终止符(默认值); 在所有平台上使用单个'\n'代替.
以前的问题探讨了为什么你不应该在这种情况下使用它,但那么它有什么用处呢?什么时候应该使用行分隔符,为什么?
我在这里收到了我的Atom阅读器的错误消息,其中建议第一个print.(f"message")是发送错误:
File "/Users/permanentmajority/Desktop/Coding/learnpythonbook.py", line 75
print(f"Let's talk about {my_name}.")
^
SyntaxError: invalid syntax
[Finished in 0.077s]
Run Code Online (Sandbox Code Playgroud)
码:
my_name = 'Zed A. Shaw'
my_age = 35 # not a lie
my_height = 74 # inches
my_weight = 180 #lbs
my_eyes = 'Blue'
my_teeth = 'White'
my_hair = 'Brown'
print(f"Let's talk about {my_name}.")
print(f"He's {my_height} inches tall.")
print(f"He's {my_weight} pounds heavy.")
print("Actually that's not too heavy.")
print(f"He's got {my_eyes} eyes and {my_hair} hair.")
print(f"His teeth are usually {my_teeth} depending on …Run Code Online (Sandbox Code Playgroud) 我们通常使用反斜杠来转义非法字符。
例如,转义双引号。
>>> "\"" == '"'
True
Run Code Online (Sandbox Code Playgroud)
在 f 字符串中,花括号用于占位。为了表示花括号,花括号被加倍。
例如,
>>> f"{{}}" == "{}"
True
Run Code Online (Sandbox Code Playgroud)
为什么在开发 f 弦时不喜欢这种直观的方法?有什么技术或设计原因吗?
>>> f'\{\}'
File "<stdin>", line 1
SyntaxError: f-string expression part cannot include a backslash
Run Code Online (Sandbox Code Playgroud) 我想写一些简单的东西
"{}MESSAGE{}".format("\t"*15, "\t"*15)
Run Code Online (Sandbox Code Playgroud)
使用
f"{'\t'*15}MESSAGE{'\t'*15}" # This is incorrect
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
"{}MESSAGE{}".format("\t"*15, "\t"*15)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有这个api调用。
payload = "{\\"weight\\":{\\"value\\":\\"85.00\\",\\"unit\":\\"kg\\"},\\"height\\":{\\"value\\":\\"170.00\\",\\"unit\\":\\"cm\\"},\\"sex\\":\\"m\\",\\"age\\":\\"24\\",\\"waist\\":\\"34.00\\",\\"hip\\":\\"40.00\\"}"
Run Code Online (Sandbox Code Playgroud)
我想使用 af 字符串来更改这些值,但出现语法错误,提示我不能对 f 字符串使用反斜杠。我能做什么?
在Python> = 3.6中,f-strings可以用作方法的替代品str.format.举个简单的例子,它们是等价的:
'{} {}'.format(2+2, "hey")
f'{2+2} {"hey"}'
Run Code Online (Sandbox Code Playgroud)
忽略格式说明符,我基本上可以str.format在f字符串中移动内部大括号的位置参数.请特别注意,我可以将str文字放在这里,虽然看起来有点笨拙.
但是有一些限制.具体来说,任何形状或形式的反斜杠都不允许在f字符串的大括号内:
'{}'.format("new\nline") # legal
f'{"new\nline"}' # illegal
f'{"\\"}' # illegal
Run Code Online (Sandbox Code Playgroud)
\如果它在支架内,我甚至不能用它来分开一条长线;
f'{2+\
2}' # illegal
Run Code Online (Sandbox Code Playgroud)
即使\在正常情况下完全允许这种用法str;
'{\
}'.format(2+2) # legal
Run Code Online (Sandbox Code Playgroud)
在我看来,如果它\在f字符串的大括号内完全看到字符,则会将硬停止编码到解析器中.为什么要实施此限制?虽然文档指定了这种行为,但它并不能证明原因.
我目前正在寻找一种方法来编写Python中TXT文件的每一行的开头和结尾.例如,
目前的TXT文件:
Jimmy
Was
Here
Run Code Online (Sandbox Code Playgroud)
将第一个值写入每行的开头
111Jimmy
111Was
111Here
Run Code Online (Sandbox Code Playgroud)
将第二个值写入每行的末尾
111Jimmy222
111Was222
111Here222
Run Code Online (Sandbox Code Playgroud)
似乎无法在Google上找到任何描述如何正确完成此操作的内容.我已经找到了写入特定行的方法,但并不是所有这些都以这种方式写入.任何帮助表示赞赏!谢谢!
我想在 python3 的 f 字符串中打印一条消息,其中包含一个由 \n 分隔的列表。
my_list = ["Item1", "Item2", "Item3"]
print(f"Your list contains the following items:\n\n{my_list}")
Run Code Online (Sandbox Code Playgroud)
期望的输出:
# Your list contains the following items:
# Item1
# Item2
# Item3
Run Code Online (Sandbox Code Playgroud) python ×9
f-string ×5
python-3.x ×3
backslash ×1
django ×1
file-io ×1
python-2.x ×1
python-3.6 ×1
readlines ×1
separator ×1
string ×1
syntax-error ×1
text ×1
text-files ×1