Python 如何修复valueError:无效\x转义

Python 如何修复valueError:无效\x转义,python,Python,具有ip地址(url)的def: 匹配=重新搜索( “([01]?\d\d | 2[0-4]\d | 25[0-5])\([01]?\d\d | 2[0-4]\d | 25[0-5])\([01]?\d\d | 2[0-4]\d | 25[0-5])” “([01]?\d\d?| 2[0-4]\d | 25[0-5])\/)|” “((0x[0-9a-fA-F]{1,2})\(0x[0-9a-fA-F]{1,2})\(0x[0-9a-fA-F]{1,2})\(0x[0-9a-fA-F]{1,2}

具有ip地址(url)的def: 匹配=重新搜索( “([01]?\d\d | 2[0-4]\d | 25[0-5])\([01]?\d\d | 2[0-4]\d | 25[0-5])\([01]?\d\d | 2[0-4]\d | 25[0-5])” “([01]?\d\d?| 2[0-4]\d | 25[0-5])\/)|” “((0x[0-9a-fA-F]{1,2})\(0x[0-9a-fA-F]{1,2})\(0x[0-9a-fA-F]{1,2})\(0x[0-9a-fA-F]{1,2}/)” “(?:[a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4},url)# 如果匹配: #打印match.group() 返回-1 其他: #打印“未找到匹配图案” 返回1

def url_length(url):
    if len(url) < 54:
        return 1
    elif len(url) >= 54 | len(url) <= 75:
        return 0
    else:
        return -1


def shortening_service(url):
    match = re.search('bit\.ly|goo\.gl|shorte\.st|go2l\.ink|x\.co|ow\.ly|t\.co|tinyurl|tr\.im|is\.gd|cli\.gs|'
                      'yfrog\.com|migre\.me|ff\.im|tiny\.cc|url4\.eu|twit\.ac|su\.pr|twurl\.nl|snipurl\.com|'
                      'short\.to|BudURL\.com|ping\.fm|post\.ly|Just\.as|bkite\.com|snipr\.com|fic\.kr|loopt\.us|'
                      'doiop\.com|short\.ie|kl\.am|wp\.me|rubyurl\.com|om\.ly|to\.ly|bit\.do|t\.co|lnkd\.in|'
                      'db\.tt|qr\.ae|adf\.ly|goo\.gl|bitly\.com|cur\.lv|tinyurl\.com|ow\.ly|bit\.ly|ity\.im|'
                      'q\.gs|is\.gd|po\.st|bc\.vc|twitthis\.com|u\.to|j\.mp|buzurl\.com|cutt\.us|u\.bb|yourls\.org|'
                      'x\.co|prettylinkpro\.com|scrnch\.me|filoops\.info|vzturl\.com|qr\.net|1url\.com|tweez\.me|v\.gd|'
                      'tr\.im|link\.zip\.net',
                      url)
    if match:
        return -1
    else:
        return 1


def having_at_symbol(url):
    match = re.search('@', url)
    if match:
        return -1
    else:
        return 1


def double_slash_redirecting(url):
    # since the position starts from, we have given 6 and not 7 which is according to the document
    list = [x.start(0) for x in re.finditer('//', url)]
    if list[len(list) - 1] > 6:
        return -1
    else:
        return 1


def prefix_suffix(domain):
    match = re.search('-', domain)
    if match:
        return -1
    else:
        return 1


def having_sub_domain(url):
    # Here, instead of greater than 1 we will take greater than 3 since the greater than 1 conition is when www and
    # country domain dots are skipped
    # Accordingly other dots will increase by 1
    if having_ip_address(url) == -1:
        match = re.search(
            '(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.'
            '([01]?\\d\\d?|2[0-4]\\d|25[0-5]))|(?:[a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}',
            url)
        pos = match.end(0)
        url = url[pos:]
    list = [x.start(0) for x in re.finditer('\.', url)]
    if len(list) <= 3:
        return 1
    elif len(list) == 4:
        return 0
    else:
        return -1
def url_长度(url):
如果len(url)<54:
返回1
elif len(url)>=54 | len(url)6:
返回-1
其他:
返回1
def前缀_后缀(域):
匹配=重新搜索('-',域)
如果匹配:
返回-1
其他:
返回1
具有子域(url)的def:
#在这里,我们将取大于3,而不是大于1,因为大于1的圆锥是当www和
#跳过国家域点
#相应地,其他点将增加1
如果ip地址(url)=-1:
匹配=重新搜索(
“([01]?\\d\\d?| 2[0-4]\\d | 25[0-5])\。([01]?\\d\\d?| 2[0-4]\\d | 25[0-5])\。([01]?\\d\\d?| 2[0-4]\\d | 25[0-5])\”
“([01]?\\d\\d?| 2[0-4]\\d | 25[0-5]))|(?:[a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}”,
(网址)
位置=匹配。结束(0)
url=url[pos:]
list=[x.start(0)在re.finditer('\.',url)中表示x]

如果python中的len(list)具有十六进制数的字符串转义(\xhh,具有十六进制值hh的字符)。 如果你有它,你就改变它。

尝试使用stringliteral
r
,它告诉python它是一个原始字符串(斜杠被视为字符,而不是转义序列)

>a='\xAT'是错误的
文件“”,第行
SyntaxError:(unicode错误)被截断\xXX转义
>>>a=r'\xAT'#可以
>>>印刷品(a)
\xat

请将输出打印给我。我添加了o/p错误的屏幕截图。请看一下。您把它放在哪里了?我看不到它。你可以看到上面的链接作为输入错误描述。。。。我需要输出字符串。请打印出字符串。@ShivamMishra您的
url
变量呢?你能显示整个错误信息吗
>>> a = '\xAT' # is wrong
File "<stdin>", line
SyntaxError: (unicode error) truncated \xXX escape  

>>> a = r'\xAT' # is fine
>>> print(a)
\xat