如何写循环在一行时,字符解码乐趣在我

2024-09-26 22:52:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一行中编写循环,第一个代码可以工作,但第二个失败

第一个

# -*- coding: UTF-8 -*-
import os
import re

def getIp():
    os.system('ipconfig /all > myip.txt')
    ipv4 =[]
    with open('myip.txt', 'r') as myip:
        for line in myip:
            line = line.decode('gbk')
            if re.match(u'   IPv4', line):
                ipv4.append(line)
    return ipv4

ip = getIp()
print ip[0]

# -*- coding: UTF-8 -*-
import os
import re

def getIp():
    os.system('ipconfig /all > myip.txt')
    ipv4 =[]
    with open('myip.txt', 'r') as myip:
        ipv4 = [line for line in myip if re.match((u'IPv4').encode('gbk'), line) ]# failed, return empty ipv4 list
        # ipv4 = [line.encode('gbk') for line in myip if re.match(u'IPv4', line.encode('gbk')) ]#failed, return empty ipv4 list
        # ipv4 = [line for line.encode('gbk') in myip if re.match(u'IPv4', line) ]# SyntaxError: can't assign to function call
    return ipv4

ip = getIp()
print ip[0]

我想,命令行是gbk,所以我应该用gbk解码。它首先返回一个三长度的列表,但第二个返回空(失败)

你能帮我做第二件工作吗

谢谢


Tags: inimportretxtforreturnifos
1条回答
网友
1楼 · 发布于 2024-09-26 22:52:04

中,首先对行进行解码,然后尝试在其中找到匹配项

line = line.decode('gbk')
if re.match(u'.....', line):

秒中对匹配的模式进行编码

re.match((u'IPv4').encode('gbk'), line)

也许应该是

re.match((u'IPv4'), line.decode('gbk'))

相关问题 更多 >

    热门问题