python3去除b_如何在python中删除字符串中的b前缀?

在使用django 2.0的python 3.6上,对字节文字的解码不能按预期工作。

是的,当我打印它时,我得到了正确的结果,但即使你正确打印它,b'值仍然存在。

这就是im编码

uid': urlsafe_base64_encode(force_bytes(user.pk)),

这就是即时解码:

uid = force_text(urlsafe_base64_decode(uidb64))

这就是django 2.0所说的:

urlsafe_base64_encode(s)[source]

在base64中对字节串进行编码,以便在URL中使用,剥去任何尾随等号。

urlsafe_base64_decode(s)[source]

解码base64编码的字符串,添加可能已被剥离的任何尾随等号。

这是我的account_activation_email_test.html文件

{% autoescape off %}

Hi {{ user.username }},

Please click on the link below to confirm your registration:

http://{{ domain }}{% url 'accounts:activate' uidb64=uid token=token %}

{% endautoescape %}

这是我的主机响应:

Content-Type:text / plain;字符集= “UTF-8”

MIME版本:1.0

内容传输编码:7位

主题:激活您的MySite帐户

来自:webmaster @ localhost

致:testuser@yahoo.com

日期:星期五,2018年4月20日06:26:46 -0000

消息ID:< 152420560682.16725.4597194169307598579@Dash-U>

嗨testuser,

请点击以下链接确认您的注册:

http://127.0.0.1:8000/activate/b'MjU'/4vi-fasdtRf2db2989413ba/

,您可以看到uid = b'MjU'

预期uid = MjU

在控制台中测试:

$ python

Python 3.6.4 (default, Apr 7 2018, 00:45:33)

[GCC 5.4.0 20160609] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode

>>> from django.utils.encoding import force_bytes, force_text

>>> var1=urlsafe_base64_encode(force_bytes(3))

>>> print(var1)

b'Mw'

>>> print(var1.decode())

Mw

>>>

经过调查,它似乎与python 3有关。

我的解决方法非常简单:

'uid': user.pk,

我在激活功能上以uidb64的形式收到它:

user = User.objects.get(pk=uidb64)

瞧:

Content-Transfer-Encoding: 7bit

Subject: Activate Your MySite Account

From: webmaster@localhost

To: testuser@yahoo.com

Date: Fri, 20 Apr 2018 20:44:46 -0000

Message-ID: <152425708646.11228.13738465662759110946@Dash-U>

Hi testuser,

Please click on the link below to confirm your registration:

http://127.0.0.1:8000/activate/45/4vi-3895fbb6b74016ad1882/

现在它运作正常。 :)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 字符串格式化可以使用字符串的 `format()` 方法或 `%` 运算符来完成。以下是使用 `%` 运算符的字符串格式化示例: ### 字符串格式化示例 ```python # 格式化整数 num = 123 print("整数:%d" % num) # 格式化浮点数 fnum = 3.1415926 print("浮点数:%.2f" % fnum) # 格式化字符串 name = "John" print("字符串:%s" % name) # 格式化多个值 age = 30 print("姓名:%s,年龄:%d" % (name, age)) ``` 输出: ``` 整数:123 浮点数:3.14 字符串:John 姓名:John,年龄:30 ``` `%` 运算符支持的格式化字符如下: | 格式化字符 | 描述 | | --- | --- | | `%d` | 整数 | | `%f` | 浮点数 | | `%s` | 字符串 | | `%c` | 字符 | | `%o` | 八进制数 | | `%x` | 十六进制数 | | `%e` | 科学计数法 | | `%g` | 根据值的大小决定使用 `%f` 或 `%e` | 除了上述格式化字符,还可以使用如下格式化选项: | 选项 | 描述 | | --- | --- | | `+` | 在正数前面显示加号 | | `-` | 左对齐 | | `0` | 填充0而不是默认的空格 | | `#` | 为八进制数或十六进制数添加前缀 | | `.` | 精度或字符串最大长度 | 示例: ```python # 格式化选项示例 print("整数:%+d" % num) # 整数:+123 print("浮点数:%0.2f" % fnum) # 浮点数:3.14 print("八进制数:%#o" % num) # 八进制数:0o173 print("十六进制数:%#x" % num) # 十六进制数:0x7b print("科学计数法:%e" % fnum) # 科学计数法:3.141593e+00 print("字符串最大长度:%.3s" % name) # 字符串最大长度:Joh ``` 输出: ``` 整数:+123 浮点数:3.14 八进制数:0o173 十六进制数:0x7b 科学计数法:3.141593e+00 字符串最大长度:Joh ``` 除了 `%` 运算符,还可以使用字符串的 `format()` 方法进行字符串格式化。`format()` 方法使用花括号 `{}` 作为占位符,可以使用位置参数或关键字参数指定要格式化的值。 ### 使用 `format()` 方法进行字符串格式化示例 ```python # 使用位置参数进行格式化 print("姓名:{},年龄:{}".format(name, age)) # 使用关键字参数进行格式化 print("姓名:{n},年龄:{a}".format(n=name, a=age)) # 使用数字索引进行格式化 print("姓名:{0},年龄:{1}".format(name, age)) # 使用字典进行格式化 person = {"name": "Mike", "age": 25} print("姓名:{name},年龄:{age}".format(**person)) ``` 输出: ``` 姓名:John,年龄:30 姓名:John,年龄:30 姓名:John,年龄:30 姓名:Mike,年龄:25 ``` `format()` 方法支持的占位符与 `%` 运算符相同,但使用方式不同。示例: ```python # 使用 format() 方法进行格式化 print("整数:{}".format(num)) print("浮点数:{:.2f}".format(fnum)) print("字符串:{}".format(name)) ``` 输出: ``` 整数:123 浮点数:3.14 字符串:John ``` 综上所述,以上是 Python 字符串格式化的详解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值