在python中从SQS消息ID中删除单引号

时间:2018-10-07 20:36:27

标签: python amazon-web-services unicode ascii amazon-sqs

我正在从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'

为什么该文本周围仍然有单引号?

1 个答案:

答案 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文件中)进行引用是很可取的。