Python(10):文本处理,正则表达式
2017-02-28 23:03
555 查看
os.getcwd() 返回当前目录
os.listdir(directory) 返回directory目录中的文件名和子目录列表
os.stat(path) 返回一个元组,关于文件的信息
st_mode:文件的访问权限
st_ino:节点数(UNIX)
st_dev:设备号
st_nlink:链接号(UNIX)
st_uid:所有者的用户id
st_gid:所有者的组id
st_size:文件的大小
st_atime:最后访问时间
st_mtime:最后修改时间
st_ctime:创建时间
os.path.split(path) 将路径分割为符合当前操作系统的组成名称。返回一个元组
os.path.join(components) 将名称链接成符合当前操作系统的路径,
os.path.normcase(path) 规范化路径的大小写。unix下文件名是区分大小写的,所以没影响,但是在windows下,操作系统在比较文件名的时候是忽略大小写的。在windows下,会返回一个全小写的路径。
os.walk(top, topdown = True, onerror = None, followlinks = False)
可以自上而下或者自下而上迭代目录树。对每个目录,创建一个由dirpath、dirnames、filenames组成的三元组。
dirpath部分是一个保存目录路径的字符串。
dirnames部分是dirpath中子目录的列表,不包括"."和".."。
filenames是dirpath中每个非目录文件的一个列表。
找到某个目录下所有的pdf文件:
#!/usr/bin/env python 3.6
import os, os.path #os系统相关的模块
import re #正则表达式的模块
def print_pdf(root, dirs, files):#找到pdf文件,打印出来
for file in files:
path = os.path.join(root, file)
path = os.path.normcase(path) #拼凑一个完整的路径出来
if re.search(r".*\.pdf", path): #看看是不是pdf文件
print(path)
#对当前目录进行遍历,并搜索pdf文件
for root, dirs, files in os.walk('.'):
print_pdf(root, dirs, files)
正则表达式的简单实用例子:
import re #引入正则表达式的模块
#创建一个字符串元组供搜索
s = ('xxx','abcxxxabc','xyx','abc','x.x','axa','axxxxa','axxya')
a = filter((lambda s: re.match(r"xxx",s)), s)#match 完全匹配
print(*a) #xxx
a = filter((lambda s: re.search(r"xxx",s)), s)#search 搜索
print(*a) #xxx abcxxxabc axxxxa
a = filter((lambda s: re.search(r"x.x",s)), s)#search 搜索,'.'匹配任意字符
print(*a) #xxx abcxxxabc xyx x.x axxxxa
a = filter((lambda s: re.search(r"x\.x",s)), s)#search 搜索,'\.'就是.了
print(*a) #x.x
a = filter((lambda s: re.search(r"x.*x",s)), s)#search 搜索,*匹配任意次数
print(*a) #xxx abcxxxabc xyx x.x axxxxa axxya
a = filter((lambda s: re.search(r"x.+x",s)), s)#search 搜索,+至少出现一次
print(*a) #xxx abcxxxabc xyx x.x axxxxa
a = filter((lambda s: re.search(r"c+",s)), s)#search 搜索,至少有一个c
print(*a) #abcxxxabc abc
#用[]表示要匹配的特殊字符集,用^表示非
#要用^和$在开头和结尾表示从头到尾不包含c字符
a = filter((lambda s: re.search(r"^[^c]*$",s)), s)#search 搜索,至少有一个c
print(*a) #xxx xyx x.x axa axxxxa axxya
>>> os.getcwd() 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32'
os.listdir(directory) 返回directory目录中的文件名和子目录列表
>>> a = os.getcwd() >>> os.listdir(a) ['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python3.dll', 'python36.dll', 'pythonw.exe', 'README.txt', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll']
os.stat(path) 返回一个元组,关于文件的信息
st_mode:文件的访问权限
st_ino:节点数(UNIX)
st_dev:设备号
st_nlink:链接号(UNIX)
st_uid:所有者的用户id
st_gid:所有者的组id
st_size:文件的大小
st_atime:最后访问时间
st_mtime:最后修改时间
st_ctime:创建时间
>>> b = os.listdir(a) >>> os.stat(b[1]) os.stat_result(st_mode=16895, st_ino=281474976800257, st_dev=3537546670, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1486357558, st_mtime=1486357558, st_ctime=1486357558)
os.path.split(path) 将路径分割为符合当前操作系统的组成名称。返回一个元组
>>> os.path.split(a) ('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python', 'Python36-32')其实就是将最后的文件或者目录分割开
os.path.join(components) 将名称链接成符合当前操作系统的路径,
os.path.normcase(path) 规范化路径的大小写。unix下文件名是区分大小写的,所以没影响,但是在windows下,操作系统在比较文件名的时候是忽略大小写的。在windows下,会返回一个全小写的路径。
os.walk(top, topdown = True, onerror = None, followlinks = False)
可以自上而下或者自下而上迭代目录树。对每个目录,创建一个由dirpath、dirnames、filenames组成的三元组。
dirpath部分是一个保存目录路径的字符串。
dirnames部分是dirpath中子目录的列表,不包括"."和".."。
filenames是dirpath中每个非目录文件的一个列表。
找到某个目录下所有的pdf文件:
#!/usr/bin/env python 3.6
import os, os.path #os系统相关的模块
import re #正则表达式的模块
def print_pdf(root, dirs, files):#找到pdf文件,打印出来
for file in files:
path = os.path.join(root, file)
path = os.path.normcase(path) #拼凑一个完整的路径出来
if re.search(r".*\.pdf", path): #看看是不是pdf文件
print(path)
#对当前目录进行遍历,并搜索pdf文件
for root, dirs, files in os.walk('.'):
print_pdf(root, dirs, files)
正则表达式的简单实用例子:
import re #引入正则表达式的模块
#创建一个字符串元组供搜索
s = ('xxx','abcxxxabc','xyx','abc','x.x','axa','axxxxa','axxya')
a = filter((lambda s: re.match(r"xxx",s)), s)#match 完全匹配
print(*a) #xxx
a = filter((lambda s: re.search(r"xxx",s)), s)#search 搜索
print(*a) #xxx abcxxxabc axxxxa
a = filter((lambda s: re.search(r"x.x",s)), s)#search 搜索,'.'匹配任意字符
print(*a) #xxx abcxxxabc xyx x.x axxxxa
a = filter((lambda s: re.search(r"x\.x",s)), s)#search 搜索,'\.'就是.了
print(*a) #x.x
a = filter((lambda s: re.search(r"x.*x",s)), s)#search 搜索,*匹配任意次数
print(*a) #xxx abcxxxabc xyx x.x axxxxa axxya
a = filter((lambda s: re.search(r"x.+x",s)), s)#search 搜索,+至少出现一次
print(*a) #xxx abcxxxabc xyx x.x axxxxa
a = filter((lambda s: re.search(r"c+",s)), s)#search 搜索,至少有一个c
print(*a) #abcxxxabc abc
#用[]表示要匹配的特殊字符集,用^表示非
#要用^和$在开头和结尾表示从头到尾不包含c字符
a = filter((lambda s: re.search(r"^[^c]*$",s)), s)#search 搜索,至少有一个c
print(*a) #xxx xyx x.x axa axxxxa axxya
相关文章推荐
- 【语言处理与Python】3.7用正则表达式为文本分词
- PHP扩展之文本处理(二)——PCRE正则表达式语法10——后向引用
- 文本处理之利器正则表达式闪亮登场
- 正则表达式搭配js轻松处理json文本方便而老古
- 文本处理三剑客--grep笔记以及正则表达式
- 文本处理以及正则表达式
- python 学习笔记 10 -- 正则表达式
- Perl语言入门-第九章-用正则表达式处理文本-习题
- Linux---文本处理(正则表达式,grep,awk,sed)
- Python正则表达式处理中文中的匹配
- python 正则表达式过滤文本中的html标签 源代码解析
- Linux基本操作 10----- 正则表达式与文件格式化处理
- 字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础
- R语言:文本(字符串)处理与正则表达式
- python 学习记录(10)-字符串与正则表达式
- 正则表达式搭配js轻松处理json文本方便而老古
- 用正则表达式和js轻松处理json文本
- 用python处理时间、utf8文本、正则匹配、序列化、目录路径搜索、xml解析
- 【语言处理与Python】3.4使用正则表达式检测词组搭配
- R语言进阶之二:文本(字符串)处理与正则表达式