为了账号安全,请及时绑定邮箱和手机立即绑定

如何读取然后使用拆分解析并写入文本文件?

如何读取然后使用拆分解析并写入文本文件?

暮色呼如 2022-06-02 15:50:13
我正在努力让 readline() 和 split() 像我期望的那样一起工作。我试图使用 .split(')') 从文本文件中删除一些数据并将其中一些数据写入下一个文本文件。我已经尝试从行中写下所有内容。我已经尝试 [cnt % 2] 来达到我的预期。   line = fp.readline()   fw = open('output.txt', "w+")   cnt = 1   while line:       print("Line {}: {}".format(cnt, line.strip()))       line = fp.readline()       line = line.split(')')[0]       fw.write(line + "\n")       cnt += 1我正在阅读的文本文件中的示例。WELD 190 制造 I MasterCAM 简介 (3) 1½ 小时讲座 - 4½ 小时实验室 注意:交叉列为 DT 190/ENGR 190/IT 190 本课程将向学生介绍 MasterCAM 和 2D 和基本 3D 建模。学生将收到需要 2 轴或 3 轴加工的零件的说明和图纸。学生将在各种机器上设计、建模、编程、设置和运行他们的零件,包括等离子切割机、水射流切割机和铣床。WELD 197 焊接技术主题 (.5 - 3)我离真正有效地抓取这些数据还很远,但我正试图开始。我的目标是仅提取类名和编号并删除描述。一如既往的感谢!
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

我相信要解决您当前的问题,如果您只尝试解析一行,您只需将第二line = fp.readline()行移动到 while 循环的末尾。目前,您实际上是从第二行开始解析,因为您已经readline在示例代码的第一行中使用了 a 。


更改后将如下所示:


   line = fp.readline() # read in the first line

   fw = open('output.txt', "w+")

   cnt = 1

   while line:

       print("Line {}: {}".format(cnt, line.strip()))

       line = line.split(')')[0]

       fw.write(line + "\n")

       cnt += 1

       line = fp.readline() # read in next line after parsing done

您的示例输入文本的输出:


WELD 190 制造 I MasterCAM 简介(3


查看完整回答
反对 回复 2022-06-02
?
桃花长相依

TA贡献1860条经验 获得超8个赞

假设您的其他类文本块与您显示的具有相同的结构,您可能希望使用正则表达式来提取类名和类号:


下面我假设每个文本块都包含信息“XX 小时讲座”,顺序相同,其中“XX”代表任何类型的数字(时间范围)。在变量“match_re”中,我定义了一个正则匹配表达式以仅匹配定义的点“XX 小时讲座”。通过使用“match.group(2)”,我将匹配限制在最里面的括号对中的部分。


下面的匹配表达式可能对您来说还不完整,因为我不知道您的整个文本文件。


下面我提取字符串:WELD 190 Manufacturing I MasterCAM简介(3)


import re


string = "WELD 190 Manufacturing I Introduction to MasterCAM (3) 1½ hours lecture - 4½ hours laboratory Note: Cross listed as DT 190/ENGR 190/IT 190 This course will introduce the students to MasterCAM and 2D and basic 3D modeling. Students will receive instructions and drawings of parts requiring 2- or 3-axis machining. Students will design, model, program, set-up and run their parts on various machines, including plasma cutters, water jet cutters and milling machines. WELD 197 Welding Technology Topics (.5 - 3)"


match_re = "(^(.*)\d.* hours lecture)"

match = re.search(match_re,string)

if match:

    print(match.group(2))

else:

    print("No match")


查看完整回答
反对 回复 2022-06-02
  • 2 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信