2015-12-29 42 views
0

python3.5打開長線碼成多線(語法錯誤:意外的字符續行字符後)

正則表達式

Monat_pattern = r"(?P<Monat>[A-Z][a-z][a-z])" 
Tag_pattern = r"(?P<Tag>\d\d)" 
Uhrzeit_pattern = r"(?P<Uhrzeit>\d\d:\d\d:\d\d)" 
Servername_pattern = r"(?P<Servername>[\w|\.]*)" 
ServerID_pattern = r"(?P<ServerID>\w*\[\d*\]:\s\w*)" 

concate他們:

pattern = Monat_pattern + r"\s*" +\\ 
      Tag_pattern + r"\s*" +\\ 
      Uhrzeit_pattern + r"\s*" +\\ 
      Servername_pattern + r"\s*"+\\ 
      ServerID_pattern + r"\s* 

瞭解到,如果有「 \「在字符串中,我需要使用」\\「來拼接

我得到錯誤:

File "<ipython-input-115-1ca2b20ef199>", line 1 
    pattern = Monat_pattern + r"\s*" +\   Tag_pattern + r"\s*" +\   Uhrzeit_pattern + r"\s*" +\   Servername_pattern + r"\s*"+\\ 
                                        ^
SyntaxError: unexpected character after line continuation character 
+3

你爲什麼使用* double *反斜槓?你只需要一個。 –

+0

您不需要在字符串文字之外轉義反斜槓。 – vaultah

+0

你可能想嘗試https://pypi.python.org/pypi/autopep8自動格式化代碼 – titus

回答

3

你只會用一個反斜線:

pattern = Monat_pattern + r"\s*" +\ 
      Tag_pattern + r"\s*" +\ 
      Uhrzeit_pattern + r"\s*" +\ 
      Servername_pattern + r"\s*"+\ 
      ServerID_pattern + r"\s*" 

實際代碼還包括一個空格後的雙反斜線之一,反斜線必須是換行符前的最後一個字符。

你一定會覺得很使用(...)括號延長邏輯行的更好,但是:

pattern = (
    Monat_pattern + r"\s*" + 
    Tag_pattern + r"\s*" + 
    Uhrzeit_pattern + r"\s*" + 
    Servername_pattern + r"\s*"+ 
    ServerID_pattern + r"\s*") 

也許你可以使用str.join()這裏:

pattern = r"\s*".join([ 
    Monat_pattern, Tag_pattern, Uhrzeit_pattern, 
    Servername_pattern, ServerID_pattern, '']) 

尾隨''確保額外的在ServerID_pattern字符串之後使用\s*

+0

一個反斜槓和(...)給我錯誤「SyntaxError:EOL掃描字符串文字」 –

+0

@Hellolad:那是因爲你最後一個字符串缺少關閉'「'我想知道或不指出或如果這只是你的問題中的一個錯字。 –

+0

你是完全正確的,非常感謝 –

相關問題