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

[文本处理] [已解决]批处理如何查找出txt文本里每一行内容中重复出现指定次数的字符串?

本帖最后由 pcl_test 于 2016-8-9 23:56 编辑

例:
a.txt文本内容为:
01 02 03 01 02
04 05 06 04 06
07 08 09 10 11 10

处理保存为b.txt:
01 02
04 06
10

就是将文本行字符出现2次的保存下来,
文本内容行字串存在个数长度不等的情况。
保存为b.txt
1

评分人数

    • pcl_test: 勿发笼统、无意义的标题PB -4

1

评分人数

    • qzwifi: 已OK,谢谢!技术 + 1
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 2# 回家路上


    你好,页面上的代码依次试过,没有用。看标题本身与我需要的也有不符。

TOP

本帖最后由 flyinnet9 于 2016-1-8 12:07 编辑

给你的是思路,重复字的不就是么
  1. @echo off
  2. for /f "delims=" %%a in (data.txt) do (
  3.   for %%b in (%%a) do (   
  4.     if defined #%%b set /p =%%b <nul
  5.     set #%%b=1
  6.   )
  7.   for /f "tokens=1 delims==" %%c in ('set #') do set %%c=
  8.   echo.
  9. )
  10. pause
复制代码
1

评分人数

TOP

回复 4# flyinnet9


请问为何我按上述代码来只能处理第一行,其它的不行呢? 补充一下文本内容行字串存在个数长度、排序不等的情况。

TOP

回复 5# qzwifi


    上面的代码按你给的例子写的,如果和例子不同,结果有差异也很正常,要么给完整的例子,要么自己写

TOP

回复 6# flyinnet9


    可是我的例子与我要处理的是一样的只是字串长了与行数多了,
每行的字串要么只有出现一次,要么出现2次,不存在出现3次或以上的。有的一行有4、5十个字串。把出现2次的保存,出现1次的不要!
我试您的代码例子没问题。请问这种情况一般会是什么原因造成的呢?我自己把懂的能试的都试了下,以您的代码改。都不行。

TOP

本帖最后由 qzwifi 于 2016-1-8 11:55 编辑

回复 6# flyinnet9


    如下例就不行:
一:01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 13 14 15 16
二:01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 01 11 21 31
三:01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 10 20 30

处理完后是:
一:13 14 15 16
二:01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 42 01 11 21 31
三:01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 10 20 30


只有第一行可以

TOP

回复 8# qzwifi


    4楼已改
1

评分人数

    • qzwifi: 好的,OK了。谢谢!技术 + 1

TOP

[已解决]批处理如何找出文本各行内容中出现3次的字串?

本帖最后由 qzwifi 于 2016-3-8 12:35 编辑

例:
a.txt文本内容为:
01 01 01 02 02 02 03 03 03 04 05 05
04 04 05 04 05 05 06 06 06 07 07 08
07 08 09 07 08 08 07 09 09 10 11 12

处理保存为b.txt:
01 02 03
04 05 06
07 08 09

将文本行字符出现3次的保存下来,处理完成保存为b.txt
注:文本内容行字符存在个数长度不等的情况


以下是论坛上的朋友写的找出现2次的代码:
http://www.bathome.net/redirect. ... 0956&ptid=38999
1

评分人数

TOP

  1. """
  2. python3取出重复3次的字符串保存为3列.py
  3. http://bbs.bathome.net/thread-39592-1-1.html
  4. codegay 2016年3月8日 00:56:57
  5. """
  6. #测试数据
  7. a="""
  8. 01 01 01 02 02 02 03 03 03 04 05 05
  9. 04 04 05 04 05 05 06 06 06 07 07 08
  10. 07 08 09 07 08 08 07 09 09 10 11 12
  11. """
  12. with open("a.txt","w+") as f:
  13.     f.write(a)
  14. #python3取出重复3次的字符串保存为3列.py
  15. with open("a.txt") as f:
  16.     txt=f.read().split()
  17. t3=[]
  18. [t3.append(r) for r in txt if (r not in t3) and txt.count(r)>=3]
  19. #N为结果输出为多少列
  20. N=3
  21. r3=[' '.join(t3[r:r+N])+"\n" for r in range(0,len(t3),N)]
  22. print(r3)
  23. with open("out.txt","w+") as f:
  24.     f.writelines(r3)
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 2# codegay

感谢楼上提供的代码,请问可以直接写bat操作的吗?哪位可以写一下。不安装python3的。谢谢!

TOP

本帖最后由 flyinnet9 于 2016-3-8 10:22 编辑
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. (for /f "delims=" %%a in (a.txt) do (
  4.   for %%b in (%%a) do (
  5.     set /a #%%b+=1
  6.     if !#%%b!==3 set /p =%%b <nul
  7.   )
  8.   echo.
  9. ))>b.txt
复制代码
1

评分人数

TOP

回复 4# flyinnet9

你好,你的代码运行后是空白文本,没有得出保存结果。望能修改一下

TOP

回复 5# qzwifi


    和a.txt放同一个目录

TOP

返回列表