如何一次使用多个字符串文字
How to use multiple string literals at once
我有一个字节串,我想在 re:
中使用
user_name = 'Simon'
string = 'Hello {user_name}, nice to see you! :)'
然而,除了使用字节之外,re 字符串还应该是原始字符串 (r
)。
那么如何同时指定字节、f 字符串和原始字符串?
我试过了:
user_name = rb'Simon'
string = brf'Hello {user_name}, nice to see you! :)'
但是:
In [1]: user_name = rb'Simon'
...: string = brf'Hello {user_name}, nice to see you! :)'
File "<ipython-input-8-93fb315cc66f>", line 2
string = brf'Hello {user_name}, nice to see you! :)'
^
SyntaxError: invalid syntax
In [2]:
我也试过 format()
但失败了:
In [2]: string = br'Hello {}, nice to see you! :)'.format(user_name)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-36faa39ba31d> in <module>()
----> 1 string = br'Hello {}, nice to see you! :)'.format(user_name)
AttributeError: 'bytes' object has no attribute 'format'
In [3]:
如何指定多个字符串文字?
字符串插值仅限于 strings,不能用于 bytes。这是地址 in the PEP:
For the same reason that we don't support bytes.format()
, you may not
combine 'f' with 'b' string literals. The primary problem is that an
object's __format__()
method may return Unicode data that is not
compatible with a bytes string.
解决方法是手动将字符串编码为字节:
>>> rf'Hello {user_name}, nice to see you! :)'.encode()
b'Hello Simon, nice to see you! :)'
我有一个字节串,我想在 re:
中使用user_name = 'Simon'
string = 'Hello {user_name}, nice to see you! :)'
然而,除了使用字节之外,re 字符串还应该是原始字符串 (r
)。
那么如何同时指定字节、f 字符串和原始字符串?
我试过了:
user_name = rb'Simon'
string = brf'Hello {user_name}, nice to see you! :)'
但是:
In [1]: user_name = rb'Simon'
...: string = brf'Hello {user_name}, nice to see you! :)'
File "<ipython-input-8-93fb315cc66f>", line 2
string = brf'Hello {user_name}, nice to see you! :)'
^
SyntaxError: invalid syntax
In [2]:
我也试过 format()
但失败了:
In [2]: string = br'Hello {}, nice to see you! :)'.format(user_name)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-36faa39ba31d> in <module>()
----> 1 string = br'Hello {}, nice to see you! :)'.format(user_name)
AttributeError: 'bytes' object has no attribute 'format'
In [3]:
如何指定多个字符串文字?
字符串插值仅限于 strings,不能用于 bytes。这是地址 in the PEP:
For the same reason that we don't support
bytes.format()
, you may not combine 'f' with 'b' string literals. The primary problem is that an object's__format__()
method may return Unicode data that is not compatible with a bytes string.
解决方法是手动将字符串编码为字节:
>>> rf'Hello {user_name}, nice to see you! :)'.encode()
b'Hello Simon, nice to see you! :)'