作者hohiyan (海洋)
看板Python
标题Re: [问题] 解析 list 问题
时间Mon Mar 30 01:55:24 2015
※ 引述《hohiyan (海洋)》之铭言:
: 各位版友大家好,我目前在处理一个 tab-delimited 格式的 txt 档。
: 其中有一个栏位的资料是这样的
: file
: row1: ["AA","BB","CC"] School1; ["DD","EE"] School2
: row2: ["FF"] School3; ["GG"] School4 ["HH"] School5
: row3: School6
: (以上的资料用csv.reader读进去後通通都在同一个栏位中)
: 其中"AA"、"BB"等为人名,School 是学校名称
: row3 因为该笔资料只有一个人,所以原始资料就省略了人名,只有学校名称
: 现在的目标是要把所有的学校名称抓出来,然後各自写入单独的栏位。
: 变成
: 1 school1 school2
: 2 school3 school4 school5
: 3 school6
: 我现在有点卡住,想不太出来该怎麽解析每一列的资料,
: 想请问有没有方法能够判断每一列中是否有["FF"]这样的资料,然後抓後面的school?
: 我现在是自学python,所以只想得到.split()这个东西,但很明显不太适用…
: 还烦请版友提示一些想法或语法的关键字供我参考研究
: 感谢~
大家好,我又来问问题了
研究了regex之後,我现在知道怎麽分别抓取人名跟学校名称了。
我用来match 学校名称的规则为
p = re.compile(r'\]\s(.*?);|\]\s(.*)')
但产生的结果都会多一个空白栏位,例如match row1 之後的结果会是
[("School 1", ""), ("", "School 2")
我猜大概是我用了 |(or) 的关系,所以变成两个规则都去match
没match到的就回传空白字元 (???
请问该怎麽解决这个问题呢?
谢谢
regex 真的好复杂 Orz...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 149.159.27.253
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1427651727.A.893.html
1F:推 ckc1ark: 你有先split过吗 要不然.*不是会match到行尾 03/30 09:12
2F:→ hohiyan: 唔...没办法split。我的例子写的不好。"AA";"BB"之间也是 03/30 10:19
3F:→ hohiyan: 用;隔开,所以也没办法用split(';')先处理过 03/30 10:19
4F:→ hohiyan: 或是我疏忽了什麽? @_@ 03/30 10:19