RegEx Python查找并打印到新文档

2024-05-29 03:32:54 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,如果这是一堆愚蠢的问题,但我有几件事我想问。基本上,我要做的是获取一个文件,这个文件被发送到一堆数据聚集在一起的地方,这些数据应该在单独的行中,对它进行排序,并在自己的行中打印每个语句。我不知道的是如何创建一个新文档,以便将所有内容转储到其中,也不知道如何打印到每个内容都位于新行的文档中。你知道吗

我决定在使用正则表达式和Python时尝试处理这个任务。我希望我的代码查找四个特定字符串(MTH |、SCN |、ENG |或HST |)中的任何一个,并复制它后面的所有内容,直到它再次运行到这四个字符串中的一个。此时我需要它停止,记录它复制的所有内容,然后开始复制新字符串。我需要让它读过去的新行,并忽略他们,我希望完成与他们

re.DOTALL

基本上,我希望我的代码采用如下方式:

MTH|stuffstuffstuffSCN|stuffstuffstuffENG|stuffstuffstuffHST|stuffstu
ffstuffSCN|stuffstuffstuffENG|stuffstuffstuffHST|stuffstuffstuffMTH|s
tuffstuffstuffSCN|stuffstuffstuffENG|stuffstuffstuff

然后变成这样一个好的可读的东西:

MTH|stuffstuffstuff

SCN|stuffstuffstuff 

ENG|stuffstuffstuff

HST|stuffstuffstuff

SCN|stuffstuffstuff

ENG|stuffstuffstuff

HST|stuffstuffstuff

MTH|stuffstuffstuff

SCN|stuffstuffstuff

ENG|stuffstuffstuff

同时创建一个新文档并将其全部粘贴到.txt文件中。到目前为止,我的代码是这样的:

import re
re.DOTALL
from __future__ import print_function
NDoc = raw_input("Enter name of to-be-made document")
log = open("C:\Users\XYZ\Desktop\Python\NDoc.txt", "w")
#Need help with this^ How do I make new file instead of opening a file?

nl = list()
file = raw_input("Enter a file to be sorted")
xfile = open(file)

for line in xfile:
        l=line.strip()
        n=re.findall('^([MTH|SCN|ENG|HST][|].)$[MTH|SCN|ENG|HST][|]',l)
                           #Edited out some x's here that I left in, sorry
            if len(n) > 0:
                nl.append(n)
for item in nl:
    print(item, file = log)

在起始文件中,填充可以是数字、字母和各种符号(包括|),但是除了它们应该在的位置之外,不会在其他任何位置出现MTH | SCN | ENG | HST |,因此我想专门查找这4个字符串作为我的开始和结束。你知道吗

除了能够为列表中的每个项目创建一个新文档并将其粘贴到单独的行中之外,上面的代码能否完成我正在尝试的工作?我可以扫描.txt文件和excel文件吗?我没有一个文件测试它,直到星期五,但我应该有它主要完成了,到那时。你知道吗

哦,还有,做一些事情,比如:

import.re
re.DOTALL
from __future__ import print_function

我需要设置任何外部设置吗?这些插件或东西是我需要导入的,还是这些都是python内置的?你知道吗


Tags: 文件字符串代码文档importre内容eng
1条回答
网友
1楼 · 发布于 2024-05-29 03:32:54

这个正则表达式将获取您的字符串,并在要分隔的每个字符串之间添加换行符:

re.sub("(\B)(?=((MTH|SCN|ENG|HST)[|]))","\n\n",line)

下面是我测试的代码:

from __future__ import print_function
import re
#NDoc = raw_input("Enter name of to-be-made document")
#log = open("C:\Users\XYZ\Desktop\Python\NDoc.txt", "w")
#Need help with this^ How do I make new file instead of opening a file?

#nl = list()
#file = raw_input("Enter a file to be sorted")
xfile = open("file2")

for line in xfile:
    l=line.strip()
    n=re.sub("(\B)(?=((MTH|SCN|ENG|HST)[|]))","\n\n",line)
                       #Edited out some x's here that I left in, sorry
    if len(n) > 0:
      nl=n.split("\n")
      for item in nl:
         print(item)

我用没有换行符的输入数据测试了这个版本。我也有一个版本,可以与新行。如果这不起作用,让我知道,我会张贴该版本。你知道吗

我所做的主要环境更改是从一个名为“file2”的文件中读取与python脚本位于同一目录中的内容,并将输出写入屏幕。你知道吗

此版本假定您的数据中有换行符,并且只在以下位置读取整个文件:

from __future__ import print_function
import re
#NDoc = raw_input("Enter name of to-be-made document")   
#log = open("C:\Users\XYZ\Desktop\Python\NDoc.txt", "w")
#Need help with this^ How do I make new file instead of opening a file?

#nl = list()
#file = raw_input("Enter a file to be sorted")
xfile = open("file")

line = xfile.read()
l=line.strip()
l=re.sub("\n","",l)
n=re.sub("(\B)(?=((MTH|SCN|ENG|HST)[|]))","\n\n",l)
print(n)

相关问题 更多 >

    热门问题