从文本文件中提取字符串并将其写入 Excel [英] Extract strings from text file and write it to Excel

查看:56
本文介绍了从文本文件中提取字符串并将其写入 Excel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图编写一个 Python 脚本来从文本文件中提取文本并将其写入 excel 文件.问题是我不知道如何提取等于旁边的字符串.我是 Python 新手,现阶段只是设法打开文件.

I was trying to write a Python script to extract texts from text file and write it into excel file. The question is I do not know how to extract the strings next to equal. I am new to Python, at this stage just manage to open the file.

数据如下:

ADD IUACCAREALST: AREA=RA, MCC="510", MNC="28", LAC="0x020a", RAC="0x68", RACRANGE="0x73", SUBRANGE=SPECIAL_IMSI_RANGE, BEGIMSI="511100001243", ENDIMSI="53110100270380", CTRLTYPE=REJECT, CAUSE=ROAMING_NOT_ALLOWED_IN_LA;

ADD IUACCAREALST: AREA=RA, MCC="510", MNC="28", LAC="0x01Fa", RAC="0x67", RACRANGE="0x63", SUBRANGE=SPECIAL_IMSI_RANGE, BEGIMSI="", ENDIMSI="", CTRLTYPE=REJECT, CAUSE=ROAMING_NOT_ALLOWED_IN_LA;

输出应如下所示:

#!/usr/bin/python
import csv
import re

fieldnames = ['AREA', 'MCC', 'MNC']

re_fields = re.compile(r'({})\s+=\s(.*)'.format('|'.join(fieldnames)), re.I)

with open('input.txt') as f_input, open('output.csv', 'wb') as f_output:
    csv_output = csv.DictWriter(f_output, fieldnames= fieldnames)
    csv_output.writeheader()

推荐答案

您更正的模式是 HERE

我会将这样的文本分成,然后在每个块中找到匹配项:

I would break text like that into BLOCKS and then find the matches in each block:

import csv
import re

fieldnames = ['AREA', 'MCC', 'MNC']

re_fields = re.compile(r'({})\s*=\s*([^,]+),'.format('|'.join(fieldnames)))

with open(fn) as f_input:
    data=f_input.read()
    
for block in re.finditer(r'(?<=ADD IUACCAREALST:)(.*?)(?=ADD IUACCAREALST:|\Z)', data, flags=re.S | re.M):
    print(re_fields.findall(block.group(1)))

打印:

[('AREA', 'RA'), ('MCC', '"510"'), ('MNC', '"28"')]
[('AREA', 'RA'), ('MCC', '"510"'), ('MNC', '"28"')]

此时,使用每个元组列表创建一个形成该 csv 记录的字典;将其写入 csv 文件.大功告成!

At that point, use each list of tuples to create a dict forming that csv record; write it to the csv file. Done!

这篇关于从文本文件中提取字符串并将其写入 Excel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆