【PYTHON】对整个文件进行正则表达式匹配

 1 #coding:utf-8
 2 import re
 3 def IDXtoSCS(path):#IDX转换为开思的函数
 4     IDXfile=open(path,‘r‘)
 5     fileread=IDXfile.readlines()
 6     IDXfile.close()
 7     p=‘"(\w)*",\s+(\d+\\.\d+),\s+(\d+\\.\d+),\s+(\d+\\.\d+),\s+"(\w*)",‘
 8     data=re.findall(p,fileread)
 9     print data
10 IDXtoSCS(‘C:/Users/Administrator/Desktop 2/0409.IDX‘)

上面这段代码是想实现对整个文件进行RE匹配,用findall找出所有与正则表达式匹配的字符串

但是运行后出现:

File "C:\Users\Administrator\Desktop 2\IDXtoSCS.py", line 8, in IDXtoSCS
    data=re.findall(p,fileread)
  File "C:\Python27\lib\re.py", line 181, in findall
    return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer

问题出在file.readlines()上

在IDLE里输入help(file.readline)

>>> help(file.readlines)
Help on method_descriptor:

readlines(...)
    readlines([size]) -> list of strings, each a line from the file.

    Call readline() repeatedly and return a list of the lines so read.
    The optional size argument, if given, is an approximate bound on the
    total number of bytes in the lines returned.

readlines是文件的每行字符串的链表,而re.findall()方法需要的argument是字符串
将fileread=IDXfile.readlines()换成fileread=IDXfile.read()就解决了
因为file.read()返回的是整个文件的字符串

时间: 2024-11-08 20:12:20

【PYTHON】对整个文件进行正则表达式匹配的相关文章

Python读写Excel文件和正则表达式

Python 读写Excel文件 这里使用的是 xlwt 和 xlrd 这两个excel读写库. #_*_ coding:utf-8 _*_ #__author__='观海云不远' #__date__ = '2019-07-11' #读写excel import xlwt import xlrd import re workbook = xlrd.open_workbook('data.xlsx') sheet = workbook.sheet_by_index(0) data = [] for

【转载】Python使用中文正则表达式匹配指定中文字符串的方法示例

本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

Python: 正则表达式匹配反斜杠 "\"

Python正则表达式匹配反斜杠 "\" eg: >>>a='w\w\w' 'w\\w\\w' #  打印出来的 "\\" 被转义成 一个反斜杠 "\" 如果需要匹配字符串a,需要匹配一个反斜杠 "\" >>>re.split(r'\\',a) ['w','w','w',] 先对字符串转义,再进行正则表达式转义 由于原始字符串中所有字符直接按照字面意思来使用,不转义特殊字符,故不做字符串转义

Python 正则表达式 匹配次数

管道可以匹配多个正则表达式中的一个 >>> >>> m=re.search(r'Batman|Tina Fey','Batman and Tina Fey')>>> print(m.group())Batman>>> m=re.search(r'Batman|Tina Fey','Tina Fey and Batman')>>> print(m.group())Tina Fey>>> 问号表明它前面

兄弟连学Python(06)---- 正则表达式匹配规则

正则表达式 - 匹配规则 基本模式匹配 一切从最基本的开始.模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符.模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符.重复出现,或表示上下文.例如: ^once 这个模式包含一个特殊的字符^,表示该模式只匹配那些以once开头的字符串.例如该模式与字符串"once upon a time"匹配,与"There once was a man from NewYork"不匹配

Python 使用正则表达式匹配URL网址

使用正则表达式匹配以 .com 或 .cn 为域名后缀的URL地址 In [1]: import re In [2]: str = "http://www.baidu.com/" In [3]: regular = re.compile(r'[a-zA-Z]+://[^\s]*[.com|.cn]') In [4]: re.findall(regular, str) Out[4]: ['http://www.baidu.com'] 原文地址:https://www.cnblogs.co

Flex的正则表达式匹配速度与手工代码的比较

flex是一个词法分析器生成器,它是编译器和解释器编程人员的常用工具之一.flex的程序主要由一系列带有指令(称为动作代码)的正则表达式组成.在匹配输入时,flex会将所有的正则表达式翻译成确定性有穷自动机,这使得flex等词法分析器生成器生成的词法分析器匹配输入模式的效率非常高.当然,有人指责flex不够灵活,功能有限,很多问题都无法解决,比如Javascript.C++等语言中二义性的问题,实际上很多程序(比如Python的解释器)的词法分析器都是用的手工代码而不是flex自动生成的.这些都

Python定期删除文件、整理文件夹

1.根据传入的参数,文件所在目录,匹配文件的正则表达式,过期天数进行删除,这些可写在配置文件del_file.conf. del_file3.py #!/usr/bin/env python # encoding: GBK import os import re import sys import time import datetime import logging #reload(sys) #sys.setdefaultencoding('utf-8') logging.basicConfi

python处理word文件:win32com用法详解

目标:用python处理doc文件 方法:引入win32com模块 ************************************************************************** 一.安装 ************************************************************************** 首先要先下载安装win32com模块(起先在linux下装不成功,后在windows下面成功了...) 下载地址:http