[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】批处理如何删除文本所有格式,只保留汉字?

本帖最后由 屡败屡战 于 2018-7-29 20:07 编辑

本人要处理大量的文档,要求将文档内容里的所有格式、换行符、回车符、空格、标点符号、数字、英文字母等等,一切全部删除,只保留汉字即可。不知能否实现??
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

可以试试用正则表达式,直接匹配出汉字。可以选择支持\p 正则的 语言或工具。 Perl,PHP, Ruby等  应该支持。python不支持。
我用了grep
  1. grep -Po '\p{Han}+' 1.txt >2.txt
复制代码

TOP

好像正是我想要的,问下,如何处理大量文本呢?

TOP

回复 2# cfwyy77_bat

更强大的python正则表达式模块 -- regex

    https://www.cnblogs.com/gayhub/p/6354097.html
1

评分人数

去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

我电脑没安装python3,我下载试试,以前没用过这个。

TOP

回复 4# codegay
对对,谢谢大佬提醒,我应该说python的标准正则库re 不支持。

TOP

回复 3# 屡败屡战
先搞定单个文本,多个你再自由发挥好了

TOP

回复 6# cfwyy77_bat


    好多工具的正则不支持{han}这样的表达式,比如notepad++,notepad2-mod,还有python,但是支持\u来匹配unicode的范围。
所以可以用\u来匹配中文的unicode范围。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

正则用\w把字符滤出来,然后再滤掉数字和字母。就可以得到楼主想要的结果了。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

  1. PowerShell -c "dir *.txt | ForEach{$str=(type $_) -join '' -replace '[^\u3400-\u9FFF]+'; sc ($_.Name+'.Log') -value $str}"
复制代码
  1. @if(0)==(0) echo off
  2. dir /b *.txt | cscript //nologo //e:jscript "%~f0"
  3. pause & goto :EOF
  4. @end
  5. var fso = new ActiveXObject('Scripting.FileSystemObject');
  6. while(!WSH.StdIn.AtEndOfStream){
  7.     var strFile = WSH.StdIn.ReadLine();
  8.     var str = fso.OpenTextFile(strFile, 1).ReadAll().replace(/[^\u3400-\u9FFF]+/g, '');
  9.     fso.OpenTextFile(strFile + '.Log', 2, 1).Write(str);
  10. }
复制代码
参考:中日韩统一表意文字字符集范围
1

评分人数

TOP

回复 3# 屡败屡战


    可以用 for + grep 处理大量文件
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

WHY用的范围可太大了。
https://www.cnblogs.com/chenwenb ... /08/17/2142718.html
我搜索到多是用0x4E00~0x9FA5
一部分是9FBF
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 12# codegay


    是的,\u3400-\u4DBF 属于扩展A区,一般用不到,加不加基本没有区别。

CJK Unified Ideographs 在 .NET 正则中的区间是 \u4E00-\u9FFF,也就是 \p{IsCJKUnifiedIdeographs}
参考:https://docs.microsoft.com/zh-cn ... regular-expressions
1

评分人数

TOP

返回列表