Удаление одинарных кавычек из идентификатора сообщения SQS в python - PullRequest
0 голосов
/ 07 октября 2018

Я получаю идентификатор сообщения из AWS SQS, как этот формат:

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

Затем он загружается на s3 в виде файла данных.Я беру файл dat локально, а затем читаю файл, и он показывает следующее:

'9c8a1bff-9ef2-411e-a163-ce631856ded3'

Почему вокруг этого текста все еще есть одинарные кавычки?

1 Ответ

0 голосов
/ 09 октября 2018

Вы ошибочно принимаете строковое содержимое в виде строкового представления и путаетесь в нем.

Строки, как данные в Python, затем становятся строками юникода или байтовыми строками в Python 2 просматриваются с окружающими ' кавычками всякий раз, когда вы смотрите на их представление.

Методы и функции, предназначенные для представления содержимого строки конечному пользователю (включая запись затем в файл), действительно показывают, что содержимое безокружающие цитаты.

В Python 2 для просмотра содержимого строки в консоли вы используете оператор print.

Код, который помещает кавычки в ваш выходной файл ".dat", здесь не представлен - именно этот код помещает туда строку.Если бы вы записывали необработанный файл самостоятельно, просто позвонив по номеру myfile.write(messageid), вы могли бы написать его без кавычек.Я склонен думать, что вы используете какой-то сторонний код для написания вашего файла данных, передавая ваши данные в виде словаря - этот код включает в себя кавычки на выходе.

Единственный способ получить эти кавычки, если бы вы вызывали file.write напрямую, это либо если вы записали repr ваших данных, как в: myfile.write(repr(messageid)), либо если этот messageid находится внутриlist или Python dictionay, и вы записываете строковое представление этой структуры данных в свой файл - как в file.write(str(my_dict_with_data))

И, более того, у этого могут быть причины..dat является универсальным расширением для данных и не имеет реальных спецификаций - во многих случаях желательно использовать кавычки вокруг таких данных (например, в файлах JSON).

...