Python3放了一个';b';在日期之前

Python3放了一个';b';在日期之前,python,Python,此Python 3代码: commentmsg = '\n' + svn_date + ' Repo: '+ svn_repository + ' Rev: ' + svn_revision + ' User: ' + svn_author + '\n' 给出以下结果: b'2020-01-29' b'09:26:49' Repo: SubversionTraining Rev: 478 User: bengt.nilsson 在日期和时间前面有一个“b”,它从哪里来,我如何摆脱它

此Python 3代码:

commentmsg =   '\n' +  svn_date + ' Repo: '+ svn_repository  + ' Rev: ' + svn_revision  + ' User: ' + svn_author + '\n'
给出以下结果:

b'2020-01-29' b'09:26:49' Repo: SubversionTraining Rev: 478 User: bengt.nilsson
在日期和时间前面有一个“b”,它从哪里来,我如何摆脱它?
这是从Python3开始的

发生这种情况是因为其中一个变量的类型可能是
bytes
,而不是
str
b
表示
bytes
对象)。尝试执行以下操作:

raw_data = [svn_date, svn_repository, svn_revision, svn_author]
data = [ele.decode() for ele in raw_data if isinstance(ele, bytes) else ele]
commentmsg = f"\n{data[0]} Repo: {data[1]} Rev: {data[2]} User: {data[3]}"

这回答了你的问题吗?你能给出
type(svn_date)
的输出吗?实际上,
str()
(以及f-strings)不能与
字节一起工作(即,它将在场景下调用
repr()
,并且仍然返回
b“xxxx”
)。您需要
decode()
使用像
utf-8
这样的编码对要字符串的字节进行编码@trolley813谢谢,我不知道。@trolley813查看我的编辑;现在可以工作了吗?实际上,代码是这样的:svn_longdate=svnlookup('date',svn_repo_path,svn_revision)。split()svn_date='%s%s'(svn_longdate[0],svn_longdate[1])svn_repository=os.path.basename(svn_repo_path)svn_message line=svn_message.replace('“,”\”).split(“\r\n”)commentmsg='\n'+svn_date+'Repo:'+svn_repository+'Rev:'+svn_revision+'User:'+svn_author+'\n'我试图对变量进行.decode(utf-8)处理,但随后得到消息“'list'对象没有属性'decde'”