Я прочитал ini-файл, чтобы открыть файл на Python. Дело в том, что информация о файле иногда находится внутри "..", а иногда - нет.

Например,

fileA = "/a/b/c.txt"
fileB = /a/b/d.txt

Есть ли простой способ определить, заключена ли строка в "..", и вернуть строку внутри кавычек?

0
prosseek 12 Сен 2010 в 08:25

2 ответа

Лучший ответ

Простое обнаружение включало бы проверку s[:1] == s[-1:] == '"' (аккуратную формулировку с нарезкой, а не индексацию, чтобы избежать исключений, если s - пустая строка) и условное удаление ровно одной цитаты с каждого конца, если по одному на обоих концах,

if s[:1] == s[-1:] == '"':
    s = s[1:-1]

В качестве альтернативы подход в ответе @Magnus, как он говорит, удаляет все начальные и конечные цитаты и делает это безоговорочно; так, например, если s начинается с трех кавычек, но не заканчивается ни одной (и во всех других странных случаях, за пределами ваших спецификаций, как указано), фрагмент в моем ответе не изменится { {X1}}, @ Magnus удалит три ведущие кавычки.

«Вы платите свои деньги и делаете свой выбор» ... если вам все равно, так или иначе (т.е. вы уверены, что ситуация, когда два ответа различаются, «совершенно и совершенно невозможна» ...), то я думаю, что подход @ Magnus на более высоком уровне абстракции более аккуратный (но это вопрос стиля - и его подход, и мой - правильные решения Python, когда вас не волнуют несогласованные или несбалансированные кавычки ;-).

3
Alex Martelli 12 Сен 2010 в 04:42

Чтобы удалить все начальные и конечные кавычки:

fileA = fileA.strip('"')
2
Magnus Hoff 12 Сен 2010 в 04:28