Я довольно новичок, и я сомневаюсь, что это очень элегантно вообще, но одним из вариантов было бы взять вашу строку (ы) после прочтения их и запустить их через string.translate (), чтобы вычеркнуть пунктуацию. Вот документация Python для него для версии 2.7 (которую, я думаю, вы используете).
Что касается реального кода, это может быть что-то вроде этого (но, возможно, кто-то лучше меня может подтвердить / улучшить его):
fileString.translate(None, string.punctuation)
где «fileString» - это строка, в которой ваш открытый (fp) читается. «Нет» предоставляется вместо таблицы перевода ( который обычно используется для фактического изменения некоторых символов в других), а второй параметр string.punctuation (строковая константа Python, содержащая все символы пунктуации) - это набор символов, которые будут удалены из вашей строки.
Если это не работает, вы можете изменить его следующим образом:
inChars = string.punctuation
outChars = ['']*32
tranlateTable = maketrans(inChars, outChars)
fileString.translate(tranlateTable)
Есть несколько других ответов на похожие вопросы, которые я нашел через быстрый поиск.
Удаление пунктуации из элементов списка Python
Удалить все специальные символы, знаки препинания и пробелы из строки
Предельная пунктирность полосы в Python 2.x
Наконец, вы сказали, что это совершенно неправильно, прокомментируйте, и я удалю его, чтобы другие не пробовали то, что я сказал, и разочаровались.
order by case when priority is null then 1 else 0 end, priority
Я нашел решение, я сделал это:
$query->addSelect('CASE WHEN c.priority IS NULL THEN 1 ELSE 0 END as HIDDEN priority_is_null');
$query->addSelect('CASE WHEN c.priority = 0 THEN 1 ELSE 0 END as HIDDEN priority_is_zero');
$query->addOrderBy('priority_is_null', 'ASC');
$query->addOrderBy('priority_is_zero', 'ASC');
$query->addOrderBy('c.priority', 'ASC');