下面的例子是在文件的指定位置增加指定字符串的例子

修改配置文件:

def add_str(pre_str): lines =[]

flag= Truef= open("z.txt")for line inf:

lines.append(line)if line.strip("\n") == "" and flag:

lines.append(pre_str)

flag = False

f.close()

f= open("z.txt", "w")

f.write("".join(lines))

f.close()

对预定的字符串批量替换指定字符:

import re

def multi_repalce(text, adict):

rx= re.compile('|'.join(map(re.escape, adict)))

# def translate(match):

#return adict[match.group(0)]

translate= lambda (match) : adict[match.group(0)]

return rx.sub(translate, text)

最后一段代码看了好长时间才稍微明白点。

map函数的第一个参数是一个function,第二个是一个序列,对这个序列的每一个元素都调用一遍这个函数返回之后的序列。下面两者是等价的。

map(re.escape, adict) == map(re.escape, adict.keys())

将上面生成的序列用 ‘|’ 分割开,作用是生成一个字符串的正则表达式,这个正则表达式匹配adict中的所有key

'|'.join(map(re.escape, adict))

re.compile()是将这个正则表达式进行翻译成真正的正则表达式。

re.compile('|'.join(map(re.escape, adict)))

print re.compile('|'.join(map(re.escape, adict)))           #<_sre.sre_pattern object at>

print type(re.compile('|'.join(map(re.escape, adict))))     #

在text中找到匹配的rx,将匹配到的部分传递给translate函数。

re.sub的用法re.sub(pattern, repl, string, count=0, flags=0),pattern.compile.sub这里的pattern就是re.sub的第一个参数。

rx.sub(translate, text)

将匹配到的参数传递给tranlate函数后,match.group(0)就是匹配的第一个组,这里传的是匹配部分返回的肯定就是匹配到的key,最终返回字典key对应的value。在外层sub方法中进行替换。

translate = lambda (match) : adict[match.group(0)]

python把光标定义到指定的位置并删除之前的字符_python 批量修改预定字符串并将修改后的字符串插入文件指定位置...相关推荐

  1. python正则匹配任意字符_Python 正则表达式 匹配任意字符的写法

    .(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符>>> >>> r=re.compile(r'.*') >>> ...

  2. python圈出车牌字符_Python+OpenCV实现车牌字符分割和识别

    最近做一个车牌识别项目,入门级别的,十分简单. 车牌识别总体分成两个大的步骤: 一.车牌定位:从照片中圈出车牌 二.车牌字符识别 这里只说第二个步骤,字符识别包括两个步骤: 1.图像处理 原本的图像每 ...

  3. python读取文件前30个字符_Python 批量读取文件中指定字符的实现

    1.背景 从指定的NLP生成的文件中读取指定的字符. 2.待读取文件 是以":"作为分隔符的数据,每一行以回车结束.此文件为XXX.train 3.读取每一句中的汉字 ... fi ...

  4. python缩进一般是几个字符_python缩进几个字符

    我们先来看一个正确的缩进案例:def perm(l):#0 # Compute the list of all permutations of l if len(l) <= 1:# 1 retu ...

  5. apk图标存放位置_安卓系统下安装完apk程序后,具体的文件夹位置在哪里呢?

    展开全部 有的程序的文件夹是自动建立在sd卡上的,有的程序是没有文件夹的,程序位于32313133353236313431303231363533e59b9ee7ad9431333365666238d ...

  6. python正则匹配任意字符_Python 正则表达式 匹配任意字符

    .(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符 >>> >>> r=re.compile(r'.*') >>> ...

  7. php 文件指定位置添加内容,C++_VC++在TXT文件指定位置追加内容的方法,本文实例讲述了VC++操作文本文 - phpStudy...

    VC++在TXT文件指定位置追加内容的方法 本文实例讲述了VC++操作文本文件的方法,实现在txt文件指定位置插入内容.对于VC++爱好者有一定的学习参考价值. 主要功能代码如下: void CGoT ...

  8. python中文件读写位置的作用-Python中文件的读写、写读和追加写读三种模式的特点...

    本文主要讨论一下文件的三种可读可写模式的特点及互相之间的区别,以及能否实现修改文件的操作 由于前文已经讨论过编码的事情了,所以这里不再研究编码,所有打开操作默认都是utf-8编码(Linux系统下) ...

  9. 清除微信登录历史、自定义默认文件保存位置以及聊天记录还原

    这篇文章的本意呢,其实对个人用户意义不大,因为桌面端微信本身提供了自定义用户数据文件存放路径的设置项,那么为什么要写出来这么一篇看似无用的教程来呢?是因为微信本身的特殊性,需要用户登录以后才可以修改设 ...

最新文章

  1. The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the argument
  2. Kinect V1读取图像数据(For Windows)
  3. 全局拖拽上传文件(类似百度网盘)的实现及踩坑
  4. 简单说一下什么是回流和重绘
  5. c语言判断整数_用c++编写闰年的判断基础程序
  6. 用TensorFlow做Kaggle“手写识别”达到98%准确率-详解
  7. 天燃气与电热水器哪个用着成本低?
  8. Q106:Linux系统下安装编译PBRT-V3
  9. 二维向量叉积的几何意义
  10. uniapp-登录界面风格-001
  11. dumprep.exe遇到无效指令
  12. SolidWorks频繁闪退,可能是(百度)输入法引起的
  13. 4246. 【五校联考6day2】san (Standard IO)
  14. [Halcon几何] 矩形顶点和对角连线角度计算
  15. NSDI'17-论文阅读[CherryPick:Adaptively Unearthing the Best Cloud Configurations for Big Data Analytics]
  16. C#DataSet处理数据
  17. [转载备用]微信直播的优势及微信直播搭建过程(点赞:主播妹子有点靓哦)
  18. Python解压缩ZIP格式
  19. 财务软件性能测试要求,财务报表性能测试总结 - 泊 涯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  20. open-falcon开源监控使用

热门文章

  1. 非交互模式修改Ubuntu密码的命令
  2. IPod在Linux下的实战
  3. Linux修改mysql的密码
  4. 接上篇-找虚拟主机过程
  5. linux 安装java10
  6. Docker架构:安装与基本命令
  7. 算法----选择排序(select sort)
  8. 发布几个常用Docker基础环境镜像
  9. HDU 1245 Saving James Bond
  10. [转贴]现在在做一个WEB的站内消息系统,从工具栏位置弹出一徐徐上升的窗口...