Как я могу заполнить строку Python пробелами?

Хороший ответ от MizardX. Незначительные ошибки - это не допускает пробелов вокруг имен и т. Д. (Что может и не иметь значения), и оно собирает кавычки, а также цитированное значение (что также может не иметь значения), и у него нет механизма эвакуации для встраивания двойные кавычки в цитированном значении (что еще раз может не иметь значения).

Как написано, шаблон работает с большинством расширенных систем регулярных выражений. Фиксация обморок, вероятно, потребует спуска, скажем, в Perl. Эта версия использует двойные кавычки для выхода - следовательно, a = «a» «b» генерирует значение поля «a» «b» (что не идеально, но может быть исправлено после этого достаточно легко):

/\s*([^=,\s]+)\s*=\s*(?:"((?:[^"]|"")*)"|([^,"]*))\s*,?/

Кроме того, вам нужно будет использовать $ 2 или $ 3 для сбора значения, тогда как с ответом MizardX вы просто используете $ 2. Таким образом, это не так просто или приятно, но оно охватывает несколько краевых случаев. Если более простой ответ является достаточным, используйте его.

Тестовый скрипт:

#!/bin/perl -w

use strict;
my $qr = qr/\s*([^=,\s]+)\s*=\s*(?:"((?:[^"]|"")*)"|([^,"]*))\s*,?/;

while (<>)
{
    while (m/$qr/)
    {
        print "1= $1, 2 = $2, 3 = $3\n";
        $_ =~ s/$qr//;
    }
}

Эти witters о том, что либо $ 2, либо $ 3 не определены - точно.

447
задан codeforester 13 February 2018 в 06:02
поделиться