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

TOP

  1. #求txt文件中所有Z后面数字的最小值和最大值
  2. #依山居 19:04 2015/11/7
  3. #题目来源: http://www.bathome.net/thread-38027-1-1.html
  4. zl=[]
  5. with open("a.txt") as f:
  6.         for l in f:
  7.                 txtline=l.rsplit()
  8.                 for ll in txtline:
  9.                         #print(ll)
  10.                         if ll[0]=="Z":
  11.                                 x=float(ll[1:])
  12.                                 zl.append(x)
  13.                                 
  14. #方法一:使用python内建的max min函数
  15. print("大: ",max(zl))
  16. print("小: ",min(zl))
  17. #方法二: 使用sorted排序后取首位和末尾元素。
  18. zl=sorted(zl)
  19. print("小: ",zl[0])
  20. print("大: ",zl[-1])
  21. #总结是不管是max 还是sort 比较的对象都应该统一是数字。
  22. #所以处理前需要先丢掉字母Z并转成浮点数。
  23. """
  24. 输出:
  25. 大:  30.0
  26. 小:  -50.013
  27. 小:  -50.013
  28. 大:  30.0
  29. """
复制代码

TOP

本帖最后由 pcl_test 于 2015-11-8 09:59 编辑
  1. Dim arr()
  2. i = 0
  3. Set fso = CreateObject("Scripting.FileSystemObject")
  4. Set f = fso.OpenTextFile("测试.txt",1)
  5. Do While f.AtEndOfStream <> True
  6.     str = f.ReadLine
  7.     GetZ(str)
  8. Loop
  9. f.Close
  10. '调用Excel函数
  11. Set objExcel= CreateObject("Excel.Application")
  12. MsgBox "最大"&objExcel.Max(arr)&vbCrLf&"最小"&objExcel.Min(arr)
  13. Function GetZ(str)
  14.     Set regEx = New RegExp
  15.     regEx.Pattern = "\bZ(-?\d+\.?\d*)"
  16.     regEx.Global = True
  17.     If regEx.Test(str) Then
  18.         Set Matches = regEx.Execute(str)
  19.         For Each Match in Matches
  20.             ReDim Preserve arr(i)
  21.             arr(i) = CDbl(Match.SubMatches(0))
  22.             i = i+1
  23.         Next
  24.     End If
  25. End Function
复制代码
1

评分人数

TOP

并没有说明输出格式。

我试试 python list排序。

TOP

返回列表