Py学习  »  Python

在python中从sqs消息id中删除单引号

Jimmy • 5 年前 • 1389 次点击  

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

为什么这段文字周围还有单引号?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39774
 
1389 次点击  
文章 [ 1 ]  |  最新文章 5 年前
jsbueno
Reply   •   1 楼
jsbueno    6 年前

你把字符串内容误认为是字符串表示,把它弄得一团糟。

字符串作为python中的数据,在python 2中是unicode字符串或字节字符串 查看 周围的 ' 每当你看到它们的表现时,你就会引用它们。

向最终用户呈现字符串内容的方法和函数(其中包括录制然后放在文件中)确实显示了该内容,但不包含周围的引号。

在Python2中,要在控制台中查看字符串内容,可以使用 print 陈述。

将引号放在输出“.dat”文件上的代码不在此处显示-该代码将字符串放在此处。如果你自己录制一个原始文件 myfile.write(messageid) 写的时候没有引号。我倾向于认为您正在使用一些第三方代码来编写您的dat文件,将数据作为字典传入-该代码包括输出上的引号。

如果直接调用file.write,则获取这些引号的唯一方法是 repr 你的数据,比如: myfile.write(repr(messageid)) ,或者如果此MessageID位于列表或Python语句中,并且将该数据结构的字符串表示形式写入 file.write(str(my_dict_with_data))

而且,它可能有这样的理由。 .dat 是数据的通用扩展,没有真正的规范——在许多情况下,这样的数据周围的Qute(例如在JSON文件中)是可取的。