逃避Python中的“:”?

时间:2017-03-25 03:49:03

标签: python escaping pytumblr

我正在使用Python(和Pytumblr)并尝试从某些返回的数据中提取某个字符串,但我搜索的字符串中包含“:”。每当我运行我的脚本时,我都会收到错误:

File "myfile.py", line 22
    if re.search('^ion': u'..', u'b', line) :
                       ^
SyntaxError: invalid syntax

这是我的代码:

import pytumblr
import re

returned = client.submission('blog') # get the submissions for a given blog

sch = open('returned')
for line in sch:
    line = line.rstrip()
    if re.search('^ion': u'..', u'b', line) :
        print line

这段代码中是否有其他错误或有没有办法逃避“:”我不知道的?我对Python很陌生,但我没想到:需要转义。

2 个答案:

答案 0 :(得分:2)

这是一个语法错误,因为冒号不是字符串的一部分。单引号'标记正在关闭字符串。您的第一个参数被解析为:

'^ion'       - String 1: ^ion
:            - Syntactical colon
 u           - The syntactical character u,
               indicating you intend for the
               following string literal to be
               in unicode
'..'         - String 2: ..

如果您希望^ion末尾的单引号成为字符串的一部分,则需要使用反斜杠'^ion\':转义 ,或者,在字符串本身周围使用双引号。由于Python接受字符串文字标记的单引号和双引号,'hello'"hello"意味着相同的事情。将'"hello world"'"'hello world'"都设为合法字符串。

如果正则表达式是这里的痛点,那里有很多文献和工具可以提供帮助。我推荐regex101

答案 1 :(得分:1)

尝试使用双引号:

re.search("^ion': u'..', u'b", line):

或逃避'

re.search('^ion\': u\'..\', u\'b', line):