用“\s”或“\n”搜索时找不到我要搜索的多行。
来源部分:
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 -----
在记事本中查看它++我看到“构建数据:(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
但我什么也没有回来。
当“构建数据”之后不存在“防御网格”时,我需要插入一个空间隔符:
我知道我漏掉了一些东西,我试着阅读了关于re.search的文章,但是我找不到任何详细的例子来解释多行是如何工作的。
你可以做你所做的,但是使用
re.findall
而不是re.search
:编辑:
问题是你正在逐行阅读。为了检测属于两行或多行的模式,您必须将字符串视为一个整体,可能要执行以下操作:
如果
lines
不是那么大,然后使用s
执行多行搜索,这是可以的。。。我想知道你为什么什么也没有回来。如果您的文件如下所示:
我开始使用
输出。这是
如果我使用字符串测试re.search,则该字符串不在如下代码所示的文件中:
没有预期的产出。
编辑:
正如索洛·卡斯特罗指出的,问题在于逐行阅读。为什么不用这样的东西呢?
第三次尝试:
相关问题 更多 >
编程相关推荐