2016-03-13 3 views
2

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

data = '23jodfjkle lj ioerz\nlkdsjflj sldjj\\difd ioiörjlezr' 

Что я хочу, чтобы создать это строка с алфавитных символов, символов \ п и символов ö. Поэтому я написал следующее:

(" ".join(re.findall("[a-zA-Z]+|\n|ö", data))) 

Но что я принять это:

'jodfjkle ljkgfj opz ioerz \n lkdsjflj sldjj difd ioi ö rjlezr' 

Почему существуют пробелы вокруг символов \ п и ö? Что я должен изменить для того, чтобы принять решение без пробелов:

'jodfjkle ljkgfj opz ioerz\nlkdsjflj sldjj difd ioiörjlezr' 
+3

Вы сделали '»».join (...)' и интересно, почему в вашем выпуске есть пробелы? –

+0

http://www.tutorialspoint.com/python/string_join.htm –

+0

Будет ли это регулярное выражение делать то, что вы хотите? '[A-Za-Zo \ п] +' –

ответ

4

При использовании оператора | в своем регулярном выражении, регулярное выражение анализатор Python считает [a-zA-Z]+, \n и ö в разные матчи. Когда вы используете " ".join(), вы должны ввести пробел во всех матчах, включая \n и ö.

Чтобы достичь желаемого выходного перемещения \n и ö внутри квадратных скобок:

print(" ".join(re.findall("[a-zA-Z\nö]+", data))) 

Выход

jodfjkle lj ioerz\nlkdsjflj sldjj difd ioiörjlezr 
Смежные вопросы