Строка Python печатает как [u'String']

Вы должны защитить обратную косую черту с помощью другой обратной косой черты, в противном случае обратная косая черта рассматривается как символ перехода для следующей двойной кавычки. См. Это сообщение в блоге Раймонда Чена для обоснования такого поведения. Вот цитата соответствующей части:

  • Строка обратных косых черт, за которой не следует кавычка, не имеет особого значения.
  • Четное число обратных слешей, за которыми следует кавычка, рассматривается как пары защищенных обратных слешей, за которыми следует слово-терминатор.
  • Нечетное число обратных косых черт, за которыми следует кавычка, рассматривается как пары защищенных обратных косых черт, за которыми следует защищенная кавычка.
blockquote>

132
задан Freek de Bruijn 14 April 2016 в 11:21
поделиться

4 ответа

[u'ABC'] был бы список с одним элементом строк unicode. Красивый Суп всегда производит Unicode. Таким образом, необходимо преобразовать список в единственную строку unicode и затем преобразовать это в ASCII.

я не знаю exaxtly, как Вы получили списки с одним элементом; участник содержания был бы списком строк и тегов, который является, по-видимому, не, что Вы имеете. Предположение, что Вы действительно всегда получаете список с единственным элементом, и что Ваш тест действительно только ASCII, Вы использовали бы это:

 soup[0].encode("ascii")

Однако перепроверьте те свои данные, действительно ASCII. Это довольно редко. Намного более вероятно это латинское 1 или utf-8.

 soup[0].encode("latin-1")


 soup[0].encode("utf-8")

Или Вы спрашиваете Красивый Суп, чем было исходное кодирование, и верните его в этом кодировании:

 soup[0].encode(soup.originalEncoding)
112
ответ дан 24 November 2019 в 00:12
поделиться

У Вас, вероятно, есть список, содержащий одну строку unicode. repr из этого [u'String'].

можно преобразовать это в список строк байтов с помощью любого изменения следующего:

# Functional style.
print map(lambda x: x.encode('ascii'), my_list)

# List comprehension.
print [x.encode('ascii') for x in my_list]

# Interesting if my_list may be a tuple or a string.
print type(my_list)(x.encode('ascii') for x in my_list)

# What do I care about the brackets anyway?
print ', '.join(repr(x.encode('ascii')) for x in my_list)

# That's actually not a good way of doing it.
print ' '.join(repr(x).lstrip('u')[1:-1] for x in my_list)
25
ответ дан 24 November 2019 в 00:12
поделиться

Используйте dir или type на 'строке' для обнаружения, каково это. Я подозреваю, что это - один из объектов тега BeautifulSoup, что печать как строка, но действительно не тот. Иначе его внутренняя часть список и Вы должны преобразовать каждую строку отдельно.

В любом случае, почему Вы возражаете против использования Unicode? Какая-либо определенная причина?

3
ответ дан 24 November 2019 в 00:12
поделиться

Вы действительно имеете в виду u'String'?

В любом случае, Вы не можете только сделать str(string) для получения строки, а не unicode-строки? (Это должно отличаться для Python 3, для которого все строки являются unicode.)

3
ответ дан 24 November 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: