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

[文本处理] 批处理如何将一组字符串打乱原有顺序?

爱民 玉伟 伟博 如祥 良智 富强 光耀 智博 来德 金吉 李松海

批处理结果也是这样就行,只是顺序打乱就可以。谢谢!

本帖最后由 ivor 于 2016-2-16 01:18 编辑

回复 1# mick00034

python传送门:https://www.python.org/downloads/

   python3.5.1 环境编写:
  1. import os, random
  2. # path = os.getcwd()
  3. # 读取t.txt 文本中的字符串,随机输出到_a.txt中
  4. #欲读取的文本格式为ANSI或者gbk编码格式
  5. nextLine=0
  6. rFile = open('t.txt', 'r')
  7. text = rFile.readlines()
  8. rFile.close()
  9. wFile = open('_a.txt','w')
  10. for line in text:
  11.     a = (line.strip('\n')).split(" ") # 过滤换行符,使用空格分割
  12.     while len(a) > 0: # 数组a如果有元素继续循环
  13.         nextLine += 1
  14.         r = random.randint(0, len(a) - 1) # 随机读取数组元素
  15.         wFile.write(a[r] + ' ')
  16.         del a[r] # 删除掉写入完的元素
  17.         if (nextLine % 10) == 0: # 10个元素,加换行符
  18.             wFile.write('\n')
  19. wFile.close()
  20. print("新文本已保存在 _a.txt")
复制代码
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

  1. @mshta http://bathome.net/s/hta/?group=base,hide WSH.StdIn.ReadAll().split(/\s+/).sort(function(){return Math.random()-0.5}).join(' ') <a.txt >_a.txt
复制代码

TOP

我发现二楼完全是来Python练手的
那我也来练手
  1. #lang racket
  2. (require 2htdp/batch-io)
  3. (for-each (lambda (x)
  4.             (write-file "new.txt" x))
  5.           (shuffle (read-words "a.txt")))
复制代码
1

评分人数

TOP

  1. """
  2. 如何将一组字符串打乱原有顺序
  3. http://bbs.bathome.net/thread-39382-1-1.html
  4. 2016年2月16日 11:25:56 依山居
  5. """
  6. #方法1 利用集合无序的特性乱序,每次程序重新运行输出的序是不一样的。
  7. #同理可以字典键唯一且无序的也是可以的。
  8. s="爱民 玉伟 伟博 如祥 良智 富强 光耀 智博 来德 金吉 李松海"
  9. print(set(s.split()))
  10. #方法2 优先推荐python内置random.sample()
  11. import random
  12. ss="爱民 玉伟 伟博 如祥 良智 富强 光耀 智博 来德 金吉 李松海"
  13. ns=ss.split()
  14. #运行可见下面相同的代码输出内容的顺序不一样。
  15. rs=random.sample(ns,len(ns))
  16. print(rs)
  17. rs=random.sample(ns,len(ns))
  18. print(rs)
  19. try:
  20.     input("回车退出")
  21. except SyntaxError:
  22.     pass
复制代码
1

评分人数

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

TOP

本帖最后由 ivor 于 2016-2-16 12:53 编辑

回复 5# codegay
  1. random.shuffle(items)
复制代码
我查了手册,shuffle更适合哟,可以少一行代码,不用再申请一个数组了
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 6# ivor


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

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "str=爱民 玉伟 伟博 如祥 良智 富强 光耀 智博 来德 金吉 李松海"
  4. for %%i in (%str%) do set /a n+=1 & set "_!random!_!n!=%%i"
  5. for /f "tokens=2delims==" %%i in ('set _') do set "s=!s! %%i"
  6. echo;!s:~1!
  7. pause
复制代码
  1. $a = '爱民 玉伟 伟博 如祥 良智 富强 光耀 智博 来德 金吉 李松海' -Split '\s+'
  2. (get-Random -Input $a -Count $a.length) -join ' '
复制代码

TOP

返回列表