Re: [问题] 解析 list 问题

楼主: hohiyan (海洋)   2015-03-30 01:55:24
※ 引述《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...
作者: ckc1ark (伪物)   2015-03-30 09:12:00
你有先split过吗 要不然.*不是会match到行尾
楼主: hohiyan (海洋)   2015-03-30 10:19:00
唔...没办法split。我的例子写的不好。"AA";"BB"之间也是用;隔开,所以也没办法用split(';')先处理过或是我疏忽了什么? @_@

Links booklink

Contact Us: admin [ a t ] ucptt.com