我正在从AWS SQS获取消息ID,如下所示:
u'messageId': u'9c8a1bff-9ef2-411e-a163-ce631856ded3'
我获取messageid值并使用以下代码进行解码:
messageid =message['messageId']
messageid =jobgroupid.encode('ascii','ignore')
messageid =messageid .replace("''", "")
当我在python中打印它时,它仅显示字符串值而没有引号。
9c8a1bff-9ef2-411e-a163-ce631856ded3
然后将其作为dat文件上传到s3。我在本地抓取dat文件,然后读取该文件,它显示如下:
'9c8a1bff-9ef2-411e-a163-ce631856ded3'
为什么该文本周围仍然有单引号?
答案 0 :(得分:0)
您误以为字符串表示形式的字符串内容,并弄乱了它。
在Python 2中,字符串作为Python中的数据,然后被查看,并在它们中使用'
引号引起来。
旨在将字符串内容呈现给最终用户的方法和功能(包括随后在文件上进行记录)确实显示了该内容而没有引号。
在Python 2中,要使用控制台中的字符串内容,请使用print
语句。
此处未显示将引号放在输出“ .dat”文件上的代码-该代码将字符串放置在此处。如果您自己记录的是原始文件,则只需调用myfile.write(messageid)
即可将其写在没有引号的位置。我倾向于认为您正在使用一些第三方代码来编写您的dat文件,并将您的数据作为字典传递-该代码包括输出中的引号。
如果直接调用file.write,则获得这些引号的唯一方法是写入数据的repr
,例如myfile.write(repr(messageid))
,或者此messageid在内部列表或Python字典,然后将该数据结构的字符串表示形式写入文件中-类似于file.write(str(my_dict_with_data))
此外,这可能有其原因。 .dat
是数据的通用扩展名,没有真正的规范-在许多情况下,围绕这样的数据(例如,在JSON文件中)进行引用是很可取的。