Поиск необработанной строки (r '\n') в сырой строке, полной ('\n'), что приводит к пусту набору результатов [duplicate]

Пожалуйста, проверьте, как только выбранная база данных не была вызвана, потому что некоторая база данных не выбрана

Проверьте

mysql_select_db('database name ')or DIE('Database name is not available!');

перед запросом MySQL, а затем перейдите к следующему шагу

$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

f($result === FALSE) {
    die(mysql_error());
9
задан Alan Moore 7 November 2015 в 17:34
поделиться

3 ответа

Путаница объясняется тем, что символ обратной косой черты \ используется как побег на двух разных уровнях. Во-первых, интерпретатор Python сам выполняет подстановки для \, прежде чем модуль re когда-нибудь увидит вашу строку. Например, \n преобразуется в символ новой строки, \t преобразуется в символ табуляции и т. Д. Чтобы получить фактический символ \, вы также можете избежать его, поэтому \\ дает один \ ] персонаж. Если символ, следующий за \, не является признанным escape-символом, тогда \ обрабатывается как любой другой символ и проходит через него, но я не рекомендую в зависимости от этого. Вместо этого всегда избегайте ваши символы \, удваивая их, т. Е. \\.

Если вы хотите увидеть, как Python расширяет ваши экраны строк, просто распечатайте строку. Например:

s = 'a\\b\tc'
print s

Если s является частью совокупного типа данных, например. список или кортеж, и если вы напечатаете этот агрегат, Python заключит строку в одинарные кавычки и будет включать экраны \ (в канонической форме), поэтому имейте в виду, как печатается ваша строка. Если вы просто напечатаете в интерпретаторе строку с кавычками, она также отобразит ее в кавычках с экранами '\'.

Как только вы знаете, как кодируется ваша строка, вы можете подумать о том, что re. Например, если вы хотите сбежать \ в строку, которую вы переходите к модулю re, вам необходимо передать \\ в re, что означает, что вам нужно будет использовать \\\\ в вашем цитированном Python строка. Строка Python закончится с \\, а модуль re будет рассматривать это как единственный литерал \.

Альтернативный способ включения символов \ в строках Python - использовать необработанные строки, например r'a\b' эквивалентен "a\\b".

11
ответ дан Tom Karzes 31 August 2018 в 21:20
поделиться
5
ответ дан eric.mcgregor 31 August 2018 в 21:20
поделиться

Собственный синтаксический анализ Python (частично) на вашем пути.

Если вы хотите увидеть, что видит re, введите

print '\d'
print '\\d'
print '\\\d'

в командной строке Python. Вы видите, что в \d и \\d оба результата приводятся в \d, последний из которых берет на себя парсер Python.

Если вы хотите избежать любых проблем с ними, используйте необработанные строки как предложенный re module documentation : r'\\d' приведет к \\d, видимому модулю RE.

4
ответ дан glglgl 31 August 2018 в 21:20
поделиться
Другие вопросы по тегам:

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