首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何读取,然后用拆分解析和写入文本文件?

如何读取,然后用拆分解析和写入文本文件?
EN

Stack Overflow用户
提问于 2019-09-21 16:28:07
回答 2查看 184关注 0票数 2

我很难让readline()和split()像我所期望的那样一起工作。我试图使用.split(‘)来减少文本文件中的一些数据,并将其中的一些数据写入下一个文本文件。

我试着从线上写出所有的东西。为了得到我所期望的,我尝试了cnt %2。

代码语言:javascript
运行
复制
   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

从文本文件im读取的示例。

焊接190制造I介绍MasterCAM (3) 1小时半的讲座-4小时半小时的实验室注意:交叉列为DT 190/ENGR 190/IT 190本课程将向学生介绍MasterCAM和2D和基本的三维建模。学生将收到要求二轴或三轴加工的零件的说明和图纸.学生将在包括等离子切割机、喷水切割机和铣床在内的各种机器上设计、建模、编程、安装和运行他们的部件。焊接197焊接技术专题(.5 - 3)

我还远没有真正有效地抓取这些数据,但我正试图从一个开始。

我的目标是只提取类名和编号,并删除描述。

一如既往地感谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-21 17:07:05

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

更改后,它将如下所示:

代码语言:javascript
运行
复制
   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

输出示例输入文本:

焊接190制造I MasterCAM简介(3

)

票数 1
EN

Stack Overflow用户

发布于 2019-09-21 17:44:40

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

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

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

下面我提取字符串:焊接190制造I简介MasterCAM (3)

代码语言:javascript
运行
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58042125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档