Python使用re模块解析导入的文本fi

2024-10-06 11:21:03 发布

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

def regexread():
    import re

    result = ''
    savefileagain = open('sliceeverfile3.txt','w')

    #text=open('emeverslicefile4.txt','r')
    text='09,11,14,34,44,10,11,  27886637,    0\n561, Tue, 5,Feb,2013, 06,25,31,40,45,06,07,  19070109,    0\n560, Fri, 1,Feb,2013, 05,21,34,37,38,01,06,  13063500,    0\n559, Tue,29,Jan,2013,'

    pattern='\d\d,\d\d,\d\d,\d\d,\d\d,\d\d,\d\d'
    #with open('emeverslicefile4.txt') as text:     
    f = re.findall(pattern,text)

    for item in f:
        print(item)

    savefileagain.write(item)
    #savefileagain.close()

上面写的函数解析文本并返回七个数字的集合。我有三个问题。

  1. 首先,“read”文件包含与text='09,….etc'完全相同的文本,它返回一个TypeError expected string or buffer,即使通过阅读一些文章,我也无法解决这个问题。
  2. 其次,当我试图将结果写入“write”文件时,不会返回任何结果,并且
  3. 第三,我不知道如何获得与print语句相同的输出,即三行七个数字,每个数字都是我想要的输出。

这是我第一次用正则表达式,所以请温柔一点!


Tags: 文件text文本retxt数字openitem
2条回答

你走对了路。。。

您将遍历该文件: How to iterate over the file in python

并将regex应用于每一行。当你意识到你在写“item”的时候,上面的链接应该能回答你所有的3个问题,而这个“item”并不存在于这个循环之外。

这应该是个诀窍,查看注释以了解我在这里做什么的解释=) 祝你好运

import re
filename = 'sliceeverfile3.txt'
pattern  = '\d\d,\d\d,\d\d,\d\d,\d\d,\d\d,\d\d'
new_file = []

# Make sure file gets closed after being iterated
with open(filename, 'r') as f:
   # Read the file contents and generate a list with each line
   lines = f.readlines()

# Iterate each line
for line in lines:

    # Regex applied to each line 
    match = re.search(pattern, line)
    if match:
        # Make sure to add \n to display correctly when we write it back
        new_line = match.group() + '\n'
        print new_line
        new_file.append(new_line)

with open(filename, 'w') as f:
     # go to start of file
     f.seek(0)
     # actually write the lines
     f.writelines(new_file)

相关问题 更多 >