Xar*_*iec 13 python regex string python-2.7
使用\ s或'\n'进行re.search找不到我正在尝试搜索的多行.
来源部分:
Date/Time:
2013-08-27 17:05:36 
----- BEGIN SEARCH -----
GENERAL DATA:
NAME:   AB12
SECTOR: 
999,999
CONTROLLED BY:  Player
ALLIANCE:   Aliance
ONLINE: 1 seconds ago
SIZE:   Large
HOMEWORLD:  NO
APPROVAL RATING:    100%
PRODUCTION RATE:    100%
RESOURCE DATA:
POWER:  0 / 0
BUILDINGS:  0 / 20
ORE:    80,000 / 80,000
CRYSTAL:    80,000 / 80,000
POPULATION: 40,000 / 40,000
BUILDING DATA:
N/A
UNIT DATA:
WYVERN(S):  100
----- END SEARCH -----
在Notepad ++中查看它我看到"BUILDING DATA:(LF)"
完整代码
lines = open('scan.txt','r').readlines()
for a in lines:
    if re.search(r"\A\d", a):
        digits = a
        if re.search(r"2013", digits):
            date.append(digits[:19])
            count +=1
        elif re.search(r",", digits):
            clean = digits.rstrip()
            sector = clean.split(',')
            x.append(sector[0])
            y.append(sector[1])
    elif re.search(r"CONTROLLED BY:", a):
        player.append(a[15:].rstrip())
    elif re.search(r"ALLIANCE:", a):
        alliance.append(a[10:].rstrip())
    elif re.search(r"SIZE:", a):
        size.append(a[6:].rstrip())
    elif re.findall('BUILDING DATA:\sN/A', a, re.M):
        def_grid = ''
        print "Didn't find it"
        defense.append(def_grid)
        defense_count +=1
    elif re.search(r"DEFENSE GRID", a):
        def_grid = a[16:].rstrip()
        print "defense found"
        defense_count +=1
但我没有任何回报.
在"建立数据:"之后,当"DEFENSE GRID"不存在时,我需要放入一个空的垫片
我知道我错过了一些东西而且我已经尝试阅读re.search但我无法找到解释多线如何工作的任何详尽的例子.
你可以做你做的,但使用re.findall而不是re.search:
re.findall('BUILDING DATA:\nN/A', a, re.M)
#['BUILDING DATA:\nN/A']
编辑:
问题是你目前正在逐行阅读.为了检测属于两行或更多行的模式,您必须将字符串视为一个整体,可能会:
s = ''.join(lines)
如果lines不是那么大就可以了,然后s用来执行你的多行搜索......
| 归档时间: | 
 | 
| 查看次数: | 31636 次 | 
| 最近记录: |