标题: [文本处理] 【已解决】求助批处理从一堆文本文件中提取关键词写到csv [打印本页]
作者: zhengwei007 时间: 2024-2-27 09:18 标题: 【已解决】求助批处理从一堆文本文件中提取关键词写到csv
本帖最后由 zhengwei007 于 2024-2-27 13:25 编辑
我想从100多个文档里面,发现有Soul Crystal字符时,截取<item>这段内容的字段。字段包括每个ID和count数量,单独存放在csv文件里。
文档中是以<item>开头,</item>结尾的,谢谢大家。
由于不能上传附件,我粘点里面内容吧。- <item>
- <!-- Stormbringer -->
- <ingredient count="1" id="72" />
- <!-- Red Soul Crystal - Stage 5 -->
- <ingredient count="1" id="4634" />
- <!-- Gemstone C -->
- <ingredient count="97" id="2131" />
- <!-- Adena -->
- <ingredient count="291000" id="57" />
- <!-- Stormbringer - Critical Anger -->
- <production count="1" id="4681" />
- </item>
- <item>
- <!-- Guardian Sword - Great Gale -->
- <ingredient count="1" id="10955" />
- <!-- Adena -->
- <ingredient count="3390000" id="57" />
- <!-- Gemstone B -->
- <ingredient count="339" id="2132" />
- <!-- Blue Soul Crystal - Stage 10 -->
- <ingredient count="1" id="4661" />
- <!-- Guardian Sword - Great Gale - Critical Bleed -->
- <production count="1" id="10958" />
- </item>
- <item>
- <!-- Blood Brother - Great Gale -->
- <ingredient count="1" id="21966" />
- <!-- Blue Soul Crystal - Stage 14 -->
- <ingredient count="1" id="9571" />
- <!-- Gemstone S -->
- <ingredient count="285" id="2134" />
- <!-- Blood Brother - Great Gale - Light -->
- <production count="1" id="21969" />
- </item>
复制代码
每个文件里可能有多个这样的内容结构。
最终csv就是这样:
72 1 4634 1 2131 97 57 291000 4681 1
10955 1 57 3390000 2132 339 4661 1 10958 1
21966 1 9571 1 2134 285 21969 1
谢谢各位大哥。
作者: Batcher 时间: 2024-2-27 09:39
回复 1# zhengwei007
请用使用网盘上传原始文件。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: aloha20200628 时间: 2024-2-27 10:50
回复 1# zhengwei007
题型类同(http://www.bathome.net/thread-68463-1-1.html)中6楼解法...
先匹配当前目录中所有包含‘Soul Crystal’字段的*.xml文件,再逐一提取目标数据,结果生成与之对应的*.csv
假设源文件*.xml均为utf-8编码,若是ansi或简中编码(gb2312/gbk),则删除第2行代码即可- @echo off &setlocal enabledelayedexpansion
- chcp 65001>nul
- for /f "delims=" %%F in (' findstr /imc:"Soul Crystal" *.xml') do (
- (for /f tokens^=1-4^delims^=^" %%1 in (' findstr "=" "%%~F" ') do for /f "tokens=1 delims= < " %%a in ("%%~1") do if /i "%%~a"=="production" (echo,!v:~1! %%4 %%2&set "v=") else (set "v=!v! %%4 %%2")
- )>"%%~F.csv"
- )
- endlocal&exit/b
复制代码
作者: zhengwei007 时间: 2024-2-27 13:25
谢谢楼上几位,已经解决问题。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |