re模块
正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
- 给定的字符串是否符合正则表达式的过滤逻辑(“匹配”);
- 通过正则表达式,从文本字符串中获取我们想要的特定部分(“过滤”)。
正则表达式匹配规则
python中的re模块
pattern = re.compile(r"\d") # r表示字符串不受\n,\d,\w等转义字符影响,u表示是unicode字符串
pattern.match(str,begin,end) # 起始位置,终止位置(是以切片的形式顾头不顾尾)
# 从起始位置开始往后找,返回第一个符合规则的(返回的是match对象),只匹配一次
pattern.search(str,begin,end)
# 从随机位置开始往后找,返回第一个符合规则的(返回的也是match对象),只匹配一次
pattern.findall(str,begin,end)
# 匹配全部字符串,返回列表
pattern.split(str,count) # 切割次数
# 分割字符串
pattern.sub('替换文字',"字符串")
re.I ==> 忽略大小写 re.S ==> 全文匹配
用法
match:从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None
1)match(模式,搜索字符串,匹配模式)
>>> r = re.match("\d+",'1234sdacsazc')
>>> r.group()
'1234'
>>> r.group(0)
'1234'
2)pattern=re.compile(模式)
m=pattern.match("查询字符串")
search:浏览整个字符串去匹配第一个,未匹配成功返回None
search(pattern, string, flags=0)
# pattern: 正则模型
# string : 要匹配的字符串
# flags : 匹配模式
findall:获取非重复的匹配列表;如果有一个组则以列表形式返回,且每一个匹配均是字符串;如果模型中有多个组,则以列表形式返回,且每一个匹配均是元祖;
findall(pattern, string, flags=0)
# pattern: 正则模型
# string : 要匹配的字符串
# flags : 匹配模式
split:根据正则匹配分割字符串
split(pattern, string, maxsplit=0, flags=0)
# pattern: 正则模型
# string : 要匹配的字符串
# maxsplit:指定分割个数
# flags : 匹配模式
sub:替换匹配成功的指定位置字符串
sub(pattern, repl, string, count=0, flags=0)
# pattern: 正则模型
# repl : 要替换的字符串或可执行对象
# string : 要匹配的字符串
# count : 指定匹配个数
# flags : 匹配模式
paramiko模块
1)创建ssh连接
import paramiko
ssh = paramiko.SSHClient() # 实例化ssh连接客户端
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 允许连接不在know_hosts文件中的主机
ssh.connect('ip地址',22,'用户名','密码') # 创建ssh连接
stdin, stdout, stderr = ssh.exec_command("Linux命令") # 输入,输出,错误
print(stdout.readlines()) # 打印输出,列表形式
ssh.close() # 关闭ssh链接
小Tips:
ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。从而导致无法登录。
2)从服务器上download文件
import paramiko
t = paramiko.Transport(('IP地址', 22))
t.connect(username= '用户名', password = '密码')
sftp = paramiko.SFTPClient.from_transport(t) # 创建sftp连接
remotepath ='./01.py' # 网络路径
localpath ='./00.py' # 本地路径
sftp.get(remotepath, localpath) # get文件
t.close() # 关闭sftp连接
3)上传文件到服务器
import paramiko
t = paramiko.Transport(("ip地址",22))
t.connect(username = "用户名", password = "口令")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath='./new.xml'
localpath='./old.xml'
sftp.put(localpath,remotepath)
t.close()