python3如何获取字符串新增的部分?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3如何获取字符串新增的部分?相关的知识,希望对你有一定的参考价值。
有两个字符串a, b
初始时a和b相同,因为某些操作,字符串a后追加了字符串c,如果通过a和b获取到c
例子:
初始阶段a = ‘abc’, b = 'abc'
a字符串追加后为'abcdef\nghi'
此时b还是'abc’
如果通过a和b获取到‘def\nghi’
当字符串长度很大时有什么高效的方法
使用字符串切片操作a[len(b):]可以得到需要的结果:
参考技术A c[len(b):] if c.startswith(b) else cpython核心编程第九章文件部分杂记
最近开始学习python第九章文件,做课后题中遇到了些问题,记录下来以便后续复习或优化纠错。
1.写文件时候获取时间对象不知如何转化为字符串存入文件,后面再读文件从字符串转为对象,后来查到可以用strftime和strptime2个函数来转换。
a.时间datetime对象A可以通过A.strftime(“%Y-%m-%d %H:%M:%S %f”)转换为字符串
b.获取的字符串A可以通过datetime.datetime.strptime(A,格式化字符串(如上))转换为datetime时间对象。
同时了解到可以用pickle等模块将文件内容序列化和反序列化,简单处理,省去细节过程,这个模块读取存储文件是以二进制方式进行,所以w和r后必须加b。还有一个据说更好的模块shelve,尚未了解 。
例如: with open(path,‘wb‘) as f:
pickle.dump(自定义结构对象,f)
这里dump将结构对象序列化存入文件,还有一个dumps它只用于字符串。
with open(path,‘rb‘) as f:
pickle.load(f)
这里读取文件内容反序列化为原来的结构对象,loads同样也只应用于字符串。
另外在open(文件名,打开方式)中遇到很多中英文路径的问题,报异常无法找到,通过把路径字符串转化为unicode后解决。
2.在匹配某些格式的文件行时,应用到了正则表达式。这里发现因为在[ ]中‘-’有特殊意义,所以如果要匹配‘-’则需要把它放到最前面避免引起错误如[-+*],同时在中括号中这些有特殊意义的符号不需要前面加‘’来匹配本身。
在编译正则时compile(str),如果str中有多个分组(),而某些分组只匹配不需要捕获的,需要在括号中加?:如(?:d{1,3})
3.在对列表删除的时候,发现remove(元素),有重复元素的时候,只能删除一个元素,可以用set先去重再删。另外循环中最好不要删除元素,导致循环对象变化容易出错,可以深copy一个对象,然后循环原来的对象,对新对象进行操作。
4.windows系统中,用cmd显示python脚本输出的print时,因为cmd软件解码方式为GBK,如果脚本是用UTF-8写的,则print输出的语句需要从UTF-8解码为unicode再编码为GBK后,才能在CMD中正常显示
5.文件通用方式:打开多个文件可以这么写:with open() as f1,open() as f2: 想要清除文件内容用f.truncate() os.getcwd()获取当前路径。
一般想要找到某个文件,我喜欢用os.listdir()然后拼接路径文件,递归直到每个路径下没有目录只有文件。 这次发现遗漏了os.walk()它会便利所有目录可以得到一个三元tupple(dirpath, dirnames, filenames),
第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。
dirpath 是一个string,代表目录的路径,
dirnames 是一个list,包含了dirpath下所有子目录的名字。
filenames 是一个list,包含了非目录文件的名字。
这些名字不包含路径信息,如果需要得到全路径,需要使用os.path.join(dirpath, name).
6.shutil模块, shutil.copy()可以直接复制一个文件或目录到另一个 shutil.rmtree()可以递归地删除一个目录及其内所有内容。
以上是关于python3如何获取字符串新增的部分?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ISO 8061 字符串日期时间派生以获取 Python3 中的时区名称? [复制]