请教日常文本txt文件处理,提取(我编辑了一下,txt格式有变)
- summerblue52近期有一批数据,有个几百M,存储于txt文本类型中,如附件,想批量提取的是文本中的下图内容,请教各位处理方法和思路,谢谢
更新了一下附件的txt内容, 主要是在内容上,实际上,根据不同的查询内容,是会吐出不同的内容的test202002.txt(2.08 KB)
- oldkingdogpython
- fangqiankexcel
- 退休工人Python处理,很好搞的。
- xzap用awk
- pluckEXCEL就行,导入文本,分隔符看你文档中是用的TAB还是什么,几分钟搞定。。。
- FQX几百兆怕是excel搞不定。
试试power bi
或者python里面用pandas iOS fly ~ - davidchiu试一下splunk
- 汗蝈蝈findstr /?
- ph_d过于简单 python 连第三方库都不需要 iOS fly ~
- summerblue52几百M,Excel尝试过,暂时不考虑...
- summerblue52
- 风过留声python逐行读
把不是的行抛掉
是的行按实际情况处理分隔符读字段 - luntanagrep 激活 test2020.txt > temp.txt
- umqcn难道标准答案不是vim?
- euzen支持这个答案。
还有一个findstr也好使。 iOS fly ~ - euzengrep和findstr三几分钟就可以完成工作了,如果要进一步处理,比如将每一行分割成几个单元,才需要awk和Python出手。 iOS fly ~
- zhouxl2000sed;或者emeditor有个查找提取
- summerblue52
- summerblue52
- summerblue52
- rihkddd
- zhouxl2000回复21#summerblue52
很精准:查找^\d+\s+南山路门店.*?激活
提取的结果:
211 南山路门店_211 211 激活
212 南山路门店_212 212 激活
211 南山路门店2_211 211 激活
212 南山路门店2_212 212 激活 - awkgrep “激活”
就行 - awk你给个完整点的文本 看了下这个格式 基本上一行代码搞定
- zhenyue说实话这是每个unix 运维都会的, 天天看日志, 只提取日志中某个模式的行。
vim , grep , sed , awk , sort
关键字: 让文本飞
一行代码的事情 - wuyanzhicheng试试python吧 应该没问题 测试了一下
f = open('test2020.txt',encoding='utf-8') #打开文件
line = f.readline() #逐行读取
while line:
if '激活' in line: #判断此行有没有包含激活
print(line, end = '') #包含则打印出来
line = f.readline()
f.close()
输出结果:
211 南山路门店_211 211 激活
212 南山路门店_212 212 激活
211 南山路门店2_211 211 激活
212 南山路门店2_212 212 激活
仅作测试,所以直接print了,实际使用可以将结果保存到新文件 - summerblue52谢谢楼上
- summerblue52
- awk不全是激活吗?
- summerblue52
- summerblue52回复24#zhouxl2000
thanks确实,针对只是近期销售这个命令,最后吐出的内容,可以用您的正则完美匹配
我改了下txt的类型,和实际更符合,它是一种混合结果----见我新更新的txt
还请帮忙看看 - summerblue52
- ptcptr看样子只能取以下2行中间的行
------------------
(结果个数 =
另外lz的数据可能是这样的,如果按表头模式来看的话 - awk简单啊 结果要分开吗? 门店和个人
- summerblue52回复28#wuyanzhicheng
因为涉及到对混合结果的查询python处理我的想法是先找------------
这个标识行,再往下找,到到---END行,处理这中间部分内容
无奈语言不熟悉,您看看... - summerblue52回复36#awk
要分开我后期想到这些内容存到sqlite中 - summerblue52
- josses正则 , textpro 可以了
- zhouxl2000回复33#summerblue52
Emeditor
查找:^\d\d\d\s+[^\s]*\s+[^\s]*\s+[^\s]*\s+$
提取:
211 南山路门店_211 211 激活
212 南山路门店_212 212 激活
211 南山路门店2_211 211 激活
212 南山路门店2_212 212 激活
211 可用 正常 0-0-7
212 可用 正常 0-0-7
213 可用 正常 0-0-7 - freerockgrep直接就搞定了吧 iOS
- summerblue52
- summerblue52
- zhouxl2000
- hotleeexecl用筛选不行吗?简单 直观
- summerblue52
- summerblue52
- zhouxl2000
- zhouxl2000回复48#summerblue52
不同行之间数据,存在行数不定,使用sed比较方便。例如:查找“------------------” 与“--- END”之间的内容,在dos下输入:
sed -e "/------------------/,/--- END/!d" test202002.txt>202002.txt
结果:
------------------
门店地址 门店名称 门店标识 销售业绩
211 南山路门店_211 211 激活
212 南山路门店_212 212 激活
(结果个数 = 2)
--- END
------------------
门店地址 门店名称 门店标识 销售业绩
211 南山路门店2_211 211 激活
212 南山路门店2_212 212 激活
(结果个数 = 2)
--- END
------------------
标识 状态 状态说明
211 可用 正常 0-0-7
212 可用 正常 0-0-7
213 可用 正常 0-0-7
(结果个数 = 3)
--- END