python新手,纯小白,想从txt中批量提取日期,求助论坛中的高手,多谢
日期是8位数字,在collection_date:之后,例如/collection_date:20120403
使用pycharm编写了程序:

import re

with open ('3215 HBV1.txt') as f:
   for dates in f:
      collection = re.findall(r'collection_date:(\d\d\d\d\d\d\d\d)',dates)
print(collection[0])


总是报错:
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/untitled2/TXTextract.py", line 7, in <module>
print(collection[0])
IndexError: list index out of range


请高人指教,程序应该如何调整,多谢

5个回答

IndexError: list index out of range,说明你的collection根本就没有0这个下标,打印整个collection先看看它的结构

as_csdn
取个什么名字好。 回复weixin_43890953: 不知道是文本内容不全的还是怎么滴,用你的代码我能取到,import re with open('ts.txt') as f: for date in f: collection = re.findall(r'collection_date:(\d\d\d\d\d\d\d\d)',date) print(collection)
接近一年之前 回复
as_csdn
取个什么名字好。 回复weixin_43890953: 根据你提供的这个文本信息,按照你原来的代码我试了一下,结果如下:['20120403']
接近一年之前 回复
weixin_43890953
weixin_43890953 请您看看这个应该怎么修改,才能提取到目标信息
接近一年之前 回复
weixin_43890953
weixin_43890953 这是目标txt的部分内容,collection_date: 后面跟着的八位数字,但是就是提取不到,确实像您说的,collection这个list是空的,就是一串【】,没有其他东西
接近一年之前 回复
weixin_43890953
weixin_43890953 FEATURES Location/Qualifiers source 1..3215 /organismHepatitis B virus /mol_typegenomic DNA /isolateHB120626 /isolation_sourcehuman serum /hostHomo sapiens /db_xreftaxon:10407 /countryJapan /collection_date:20120403
接近一年之前 回复

应该没有找到匹配的字段,collection是一个空的列表

qq_39412061
吃鸡王者 回复weixin_43890953: 小括号在原来的数据里有没有?没有的换去掉小括号 还有8个数字区陪可以这样写 \d{8}
接近一年之前 回复
weixin_43890953
weixin_43890953 请您看看这个应该怎么修改,才能提取到目标信息
接近一年之前 回复
weixin_43890953
weixin_43890953 这是目标txt的部分内容,collection_date: 后面跟着的八位数字,但是就是提取不到,确实像您说的,collection这个list是空的,就是一串【】,没有其他东西
接近一年之前 回复
weixin_43890953
weixin_43890953 FEATURES Location/Qualifiers source 1..3215 /organismHepatitis B virus /mol_typegenomic DNA /isolateHB120626 /isolation_sourcehuman serum /hostHomo sapiens /db_xreftaxon:10407 /countryJapan /collection_date:20120403
接近一年之前 回复

朋友,正如上面两位所说, collection为空,其实就是你运用函数 re.findall失败了。没有读取相应的数据。
我没用过 re.findall这个函数,如果可以请你把txt一行的所有数据贴一贴,只有知道txt的数据排布,才能相应的提取想要的数据

import re
from datetime import datetime

with open('HBV1.txt') as f:
    for line in f:
        # TODO the date string is maybe not a date, the regular expression can be enhanced here
        collection_date = re.findall(r'collection_date:(\d{8})', line)

        if collection_date:
            print(collection_date[0])
            collection_date = datetime.strptime(collection_date[0], '%Y%m%d')
            print(datetime.strftime(collection_date, '%Y-%b-%d'))
        else:
            print('this line has no collection date, line content {}'.format(line))


re正则表达式这个括号括起来的是从1开始的,比如你括了3个括号,那第一个括号括起来的就是collect(1),你可以试试

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

1
python scrapy 爬虫图片新手求助
2
python新手求问怎么把txt中的链接传到docker打开的一个api中
2
python 匹配excel和txt文件,提取含有关键词的行
2
python中如何判断一个数组中有几个不相同的数
0
python 提取字符串信息
3
Anaconda激活python3的环境后在终端中使用的python版本确实python2(Mac环境)
4
文件夹下txt批量提取列并处理
0
求助:linux系统里升级python版本出现问题
1
python 新手,因写论文需要微博爬虫,下载别人的代码自己跑,有一段执行其他目录下的python文件的代码,会报错。
0
anaconda创建新环境后python版本的问题
1
用python提取Excel数据,但是提取后新保存的Excel文件数据格式改变了
2
如何用Python 打开excel 文件
0
Python如何实现在Excel其中一个sheet中选取一部分单元格,所有单元格按照同一个公式计算,并输出到另一个Sheet中?
1
python绘图,如何让坐标轴不自动显示加上一个数
1
如何使java和python互相传参(调用)
1
求助:python中用plt绘制图形时,如何限定图形尺寸(要使横纵坐标不等比例)?
1
Python如何从Pandas的一个DataFrame中获得第一列的索引,匹配到另一个DataFrame第一列索引的对应行,并对这些行中每一列的数值求和?
1
如何抽取TXT中的特定格式文本内容?
0
python文档字符串输入中文报错
0
想请教一下为什么在python没法用<a href=""></a>在本地文件中多文件搜索html文件(如“web/index.html”)?