Files
jupyter/文件管理1.ipynb
T
2021-10-11 15:08:39 +08:00

34 KiB

文件管理

数字文件名转换为文本文件名

In [ ]:
import os,sys,shutil
import openpyxl
import math

fi_xls = os.getcwd() + '/file/中国石油化工股份有限公司安庆炼化分公司员工在职人员名单.xlsx'
fi_path = os.getcwd() + '/file/210924'
old = []
dict1 = {}

wb = openpyxl.load_workbook(fi_xls)
sheet = wb.active
depart = []
for n in range(2,sheet.max_row+1):    
    m_name = sheet.cell(n,1).value.strip()
    m_depart = sheet.cell(n,5).value
    if m_depart not in depart:
        depart.append(sheet.cell(n,5).value)
    dict1[int(m_name.split('.')[0])] = [sheet.cell(n,2).value.strip(),sheet.cell(n,5).value.strip()]
    
# 创建部门办公室    
m_path = os.getcwd()+'/file/210924/new'
for pn in depart:
    if not os.path.exists(m_path + '/' + pn):
        os.mkdir(m_path + '/' + pn)
fl=os.listdir(fi_path)
for fn in fl:
    if os.path.isfile(fi_path + '/' + fn):
        ofn = int(fn.split('.')[0])
        old.append(ofn) 
old.sort()
for n in old:    
    o_name = f'{fi_path}/{n}.pdf'
    n_name = f'{fi_path}/new/{dict1[n][1]}/{str(n).rjust(5,"0")}-{dict1[n][0]}.pdf'
    if not os.path.exists(n_name):
        shutil.copyfile(o_name,n_name)
        print(n_name)
#print(dict1)

PDF文件压缩

In [ ]:
import fitz
import os


def covert2pic(zoom):
    if os.path.exists('.pdf'):       # 临时文件,需为空
         os.removedirs('.pdf')
    os.mkdir('.pdf')
    for pg in range(totaling):
        page = doc[pg]
        zoom = int(zoom)            #值越大,分辨率越高,文件越清晰
        rotate = int(0)
        print(page)
        trans = fitz.Matrix(zoom / 100.0, zoom / 100.0).preRotate(rotate)
        pm = page.getPixmap(matrix=trans, alpha=False)
      
        lurl='.pdf/%s.jpg' % str(pg+1)
        pm.writePNG(lurl)
    doc.close()

def pic2pdf(obj):
    doc = fitz.open()
    for pg in range(totaling):
        img = '.pdf/%s.jpg' % str(pg+1)
        imgdoc = fitz.open(img)                 # 打开图片
        pdfbytes = imgdoc.convertToPDF()        # 使用图片创建单页的 PDF
        os.remove(img)  
        imgpdf = fitz.open("pdf", pdfbytes)
        doc.insertPDF(imgpdf)                   # 将当前页插入文档
    if os.path.exists(obj):         # 若文件存在先删除
        os.remove(obj)
    doc.save(obj)                   # 保存pdf文件
    doc.close()


def pdfz(sor, obj, zoom):    
    covert2pic(zoom)
    pic2pdf(obj)
    


sor = "5.pdf"              # 需要压缩的PDF文件
obj = "new-" + sor
doc = fitz.open(sor) 
totaling = doc.pageCount

zoom = 150                     # 清晰度调节,缩放比率
pdfz(sor, obj, zoom)
os.removedirs('.pdf')
In [ ]:
from pdf2image import convert_from_path, convert_from_bytes
import os,sys
import tempfile
from pdf2image.exceptions import (
    PDFInfoNotInstalledError,
    PDFPageCountError,
    PDFSyntaxError
)
#images = convert_from_path('1.pdf',dpi=200,fmt='jpg', output_folder='./sample_data')
with tempfile.TemporaryDirectory() as path:
    images_from_path = convert_from_path('5.pdf', dpi=100,fmt='jpg', output_folder='./pic')
print(path)
In [ ]:
import img2pdf  
import os,sys
import glob

fl=glob.glob('./pic/*.jpg')
fl.sort()
a4inpt = (img2pdf.mm_to_pt(210),img2pdf.mm_to_pt(297))
layout_fun = img2pdf.get_layout_fun(a4inpt)
with open("name.pdf","wb") as f:
    f.write(img2pdf.convert(fl,layout_fun=layout_fun))
In [ ]:
import glob
import fitz  # 导入本模块需安装pymupdf库
import os,sys

def pic2pdf_1(img_path, pdf_path, pdf_name):
    doc = fitz.open()
    fl=os.listdir(img_path)
    fl.sort()
    width, height = fitz.PaperSize("a4")
    for img in fl:
        fn = img_path+'/'+img
        if os.path.isfile(fn):
            imgdoc = fitz.open(img_path+'/'+img)
            pdfbytes = imgdoc.convertToPDF()
            imgpdf = fitz.open("pdf", pdfbytes,width = width, height = height)
            doc.insertPDF(imgpdf)
    doc.save(pdf_path +'/'+ pdf_name)
    doc.close()

img_path = os.getcwd() +'/pic'
pdf_path = os.getcwd()
pic2pdf_1(img_path=img_path, pdf_path=pdf_path, pdf_name='1.pdf')

图片文件扫描识别

In [ ]:
#将指定目录下图片文件进行文字识别
import os,sys
from aip import AipOcr
import glob

""" 你的 APPID AK SK """
APP_ID = '17553946'
API_KEY = 'IMC1ss3Tyo3vEAdVH6jgcdv2'
SECRET_KEY = 'Iua6KdhuDtz159rjzGeFGpqgjhnoU0zZ'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

options = {}
options["language_type"] = "CHN_ENG"
options["detect_direction"] = "true"
options["detect_language"] = "true"
options["probability"] = "true"

fi_path = os.getcwd()+'/pic'
fl = glob.glob(f'{fi_path}/*.jpg')
fl.sort()
for fl1 in fl:
    file_name =  fl1
    image = get_file_content(file_name)
    result= client.basicGeneral(image, options)
    if 'words_result' in result:
        print('\n'.join([w['words'] for w in result['words_result']]))
        print('\n')
        
        

word文档读取

In [ ]:
import docx
import json
Doc = docx.Document(r"症状对症处方选穴.docx")
#print("檔案內含段落數:",len(Doc.paragraphs),"\n")
testList = []
text1 = []
dict1 = {}
for text in Doc.paragraphs:
    testList.append(text)
i = 0
for pg in testList:
    
    if len(pg.text) >0:
        s = ''.join(pg.text.split())        
        if s[0:1] == '第':
            i += 1
            n = 0
            
            dict1.setdefault(i,{})
            dict1[i]['title'] = pg.text.split()[1]
            dict1[i]['sub'] = {}
            
            #dict1[i]['title'].setdefault(i,{})
        elif s[0:1] == '(':
            sub = s.split(')')[1]
            dict2 = {}
            dict1[i]['sub'].setdefault(sub,[])
        else:
            dict1[i]['sub'][sub].append(s)
filename = '症状对症处方选穴.json'
with open(filename,'w') as fl:
    json.dump(dict1, fl,ensure_ascii=False) 
print('ok')  
In [ ]:
import docx
import json
Doc = docx.Document(r"常见疾病辨病处方选穴.docx")
#print("檔案內含段落數:",len(Doc.paragraphs),"\n")
testList = []
text1 = []
dict1 = {}
for text in Doc.paragraphs:
    testList.append(text)
i = 0
for pg in testList:
    
    if len(pg.text) >0:
        s = ''.join(pg.text.split())        
        if s[0:1] == '第':
            i += 1
            n = 0
            
            dict1.setdefault(i,{})
            dict1[i]['title'] = pg.text.split('节')[1]
            dict1[i]['sub'] = {}
            
            #dict1[i]['title'].setdefault(i,{})
        elif s[0:1] == '(':
            sub = s.split(')')[1]
            dict2 = {}
            dict1[i]['sub'].setdefault(sub,[])
        else:
            dict1[i]['sub'][sub].append(s)
filename = '常见疾病辨病处方选穴.json'
with open(filename,'w') as fl:
    json.dump(dict1, fl,ensure_ascii=False)
print('ok')  
In [ ]:
import json
import re
filename = '症状对症处方选穴.json'
pattern = r'[\d\.]'
mo =r'[\u4e00-\u9fa5]+'
dict2 = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    m_title = v['title']
    for k1,v1 in v['sub'].items():
        sub_title = k1            
        s = ''
        for mx in v1:            
            s = s + mx
        list1 = re.split(pattern, s)
        list2 = []
        for ss in list1:
            if ss != '':
                list3 = re.findall(mo,ss)
                list2.append(list3)
                
        #print(m_title,sub_title,list2)
        dict2.setdefault(m_title,{})
        dict2[m_title][sub_title] = list2
filename = 'new_症状对症处方选穴.json'
with open(filename,'w') as fl:
    json.dump(dict2, fl,ensure_ascii=False) 
print('ok')  
       

PDF文件读取

In [13]:
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBox
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed

path = "5.pdf"

# 用文件对象来创建一个pdf文档分析器
praser = PDFParser(open(path, 'rb'))
# 创建一个PDF文档
doc = PDFDocument()
# 连接分析器 与文档对象
praser.set_document(doc)
doc.set_parser(praser)

# 提供初始化密码
# 如果没有密码 就创建一个空的字符串
doc.initialize()

# 检测文档是否提供txt转换,不提供就忽略
if not doc.is_extractable:
    raise PDFTextExtractionNotAllowed
else:
    # 创建PDf 资源管理器 来管理共享资源
    rsrcmgr = PDFResourceManager()
    # 创建一个PDF设备对象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 创建一个PDF解释器对象
    interpreter = PDFPageInterpreter(rsrcmgr, device)

    # 循环遍历列表,每次处理一个page的内容
    for page in doc.get_pages():
        interpreter.process_page(page)                        
        # 接受该页面的LTPage对象
        layout = device.get_result()
        # 这里layout是一个LTPage对象,里面存放着这个 page 解析出的各种对象
        # 包括 LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等                            
        for x in layout:
            if isinstance(x, LTTextBox):
                print(x.get_text().strip())
WARNING:pdfminer.cmapdb:The code b'c\x07h\x07\xff\x0cOFT\x0ch7\x9a\xd8^\xa6S\xca\x91\xcd\x91\xcfv\x84N\xbab@b\xe5g\tv\x84\x81\x02\x80\xaa\x91\xcfS\xef\x80\xfdN\rT\x0c\xff\x0cN_\x01f/b\x11N\xec\x8b\xf4v\x84OS\x81\x02\x80\xaas\x87\xff\x0cb@N\xe5SUSUS\xeag\t' has an uneven length, trimming last byte.
WARNING:pdfminer.cmapdb:The code b"g:OSS\xeag\tW(l'O\x9b^\x94QE\x8d\xb3v\x84`\xc5Q\xb5N\x0bbM\x80\xfdkc^8]\xe5O\x00\x02N\xbaOSQ\x85\x90\xe8v\x84l'O\x9b~\xd9Qh\x90\xe8\x97`\x80\xbav\x84T|T8ge\x83\xb7_\x97\xff\x0cW(T|T8" has an uneven length, trimming last byte.
WARNING:pdfminer.cmapdb:The code b"\x91\xcfY'v\x84N\xbaQv\x8e\xabOSO\x9bl'\x80\xfdR\x9b\x01_:\xff\x0c_\xc3\x80\xbaR\x9f\x80\xfd_:Y'0\x02^\x0cg\x1b~\xe7~\xedO\xddc\x01\x82oY}v\x84Pe^\xb7u\x1fm;N``\xef0\x02" has an uneven length, trimming last byte.
中国石化
安庆石化公司
2021年09月
包永
00005
中国石化
安庆石化公司
姓名
编号
性别
年龄
1. 综合评定
包永
00005
男
44
测试标准
身高体重
肺活量
握力
坐位体前屈
纵跳
单脚站立
选择反应时
台阶指数
俯卧撑
国民体质测定标准
174.7 厘米, 73.6 公斤
3812 毫升
51 千克
20 厘米
38.4 厘米
13.2 秒
0.554 秒
65 分
39 次
5分
4分
4分
5分
4分
3分
3分
4分
5分
感谢您完成测试,以《国民体质测定标准》综合评级,您的总分为28分(其中项目纵跳、俯卧撑因
年龄或其它原因超出评级范围,得分仅供参考,不计入总分),等级为一级(优秀)。
2. 分析报告
身高(厘米)
174.7
体重(公斤)
73.6
理想BMI参考值:18.5 ~ 23.9
BMI
24.1
BMI是Body Mass Index的缩写,中文为「身高体重指数」,是以身高、体重比例拿来用作肥胖的
指标,但同样高度及重量的人所拥有的脂肪量可能不同,也Ŧ⽢ᅎ葏厁ʀꩳ蟿ౢ䁎啓啓
靠BMI值并无法完整反映出一个人的健康状态,建议可以两个数据搭配参考,对自己的身材更有了
解和掌握。 BMI值相同的人,体格可能不同。并不是每个人都适用BMI的。如:对肌肉很发达的运
动员或有水肿的病人,体重指数值可能较高,难以准确评估其肥胖程度。老年人的肌肉组织与其脂
肪组织相比,肌肉组织的减少较多,计算的体重指数值可能会低估其肥胖程度。而相等BMI值的女
性的体脂百分含量一般大于男性。
您的BMI值在正常范围之内。希望今后继续加强锻炼,保持良好的生活习惯。
肺活量(vital capacity)是指在最大吸气后尽力呼气的气量。包括潮气量、补吸气量和补呼气量三
部分。潮气量是指一次呼吸周期中肺吸量或呼出的气量,在潮气量之外再吸入的最大气量为补吸气
量,在潮气量之外再呼出的最最大量为补呼气量,最大呼气后残留在肺内的气量为余气量。 肺活量
与人的呼吸密切相关。生理学研究表明:人体的各器官、系统、组织、细胞每时每刻都在消耗氧,
机体只有在氧供应充足的情况下才能正常工伀Ɏ멏卑薐葬❏魾梐悀멶葔籔㡧斃띟響౗⡔籔
过程中,肺不仅要摄入氧气,还要将体内代谢出的二氧化碳排出。 可以这样认为:肺是机体气体交
换的中转站,这个中转站的容积大小直接决定着每次呼吸气体交换的量,这是检测肺功能的最直观、
也是最客观的指标。
健康状况愈好的人肺活量愈大,您的身体健康状况良好。肺活量能够反映一个人的心肺功能,肺活
量大的人其身体供氧能力ş㫿౟쎀멒龀ﵟ㩙✰ɞ౧᭾Ƃ潙絶葐敞띵Ὥ㭎恠
握力主要是测试上肢肌肉群的发达程度,测试受试者前臂和手部肌肉力量,反映人体上肢力量的发
展水平的一种指标。 在体能测试中,它常以握力体重指数的形式体现,即把握力的大小与被测人的
体重相联系,以获得最科学的体力评估。 握力测试偏重于力量,对于一般人而言,如果体检各项指
标正常且不是亚健康状态,即便握力较弱,基本不用担心影响寿命。 越来越多研究表明,握力强可
以保护我们免受心脏病、糖尿病和痴呆等疾病的侵害。
您的握力很好,研究发现握力强的健康中年人在记忆测试、推理和快速思考能力等方面表现更好,
说明您有健康的大脑,请保持良好的生活习惯。
坐位体前屈的测试目的是测量在静止状态下的躯干、腰、髋等关节可能达到的活动幅度,主要反映
这些部位的关节、韧带和肌肉的伸展性和弹性及身体柔韧素质的发展水平。 柔韧性是身体健康素质
的重要组成部分,经常做伸展练习可以保持肌腱、肌肉及韧带等软组织的弹性使柔韧性得到充分发
展,人体关节的活动范围将明显加大,关节灵活性也将增强。同时,动作将更加协调、准确、优美,
在体育活动和日常生活中可减少由于动作幅度加大、扭转过猛而产生的关节、肌肉等软组织损伤。
您的柔韧性程度较好,关节的活动幅度较大,关节灵活性较强。柔韧素质与健康的关系极为密切,
您的柔韧性高,也说明身体的协调能力强,能更好地发挥力量、速度等素质,对防止运动创伤等都
有积极的作用。
纵跳主要用来量化人体的爆发力,是人体肌肉力量、身体柔韧性、协调性的综合体现。 通过纵跳,
可以强化人的大小腿的肌肉,增强下肢力量,让人行走过程中步伐稳健,不易跌倒;同时可以增强
人体缓冲退让能力,使肌腱、韧带、肌肉都得到锻炼。 平时通过纵跳活动,能够活动筋骨,加强体
内物质代谢,增强骨骼强度和密度。
您的成绩良好,表明您肌肉力量、身体柔韧性、协调性方面综合性表现良好。希望今后加强锻炼,
注意保持。
闭眼单脚站立是通过测量人体在没有任何可视参照物的情况下,仅依靠大脑前庭器官的平衡感受器
和全身肌肉的协调运动,来维持身体重心在单脚支撑面上的时间,以反映平衡能力的强弱。 闭眼单
脚站立,归根到底,还是在测试人的平衡能力。平衡能力不仅是人们日常生活和体育活动中必须具
备的一种能力,它更是一种复杂的人体综合能力,平衡力下降,危害可想而知。近年来,我国国民
整体的平衡能力呈下降趋势,尤其是中老年群体。
您的成绩较低,说明身体老化比正常情况快,尤其是在平衡能力方面需要加强锻炼,建议经常练习
金鸡独立等锻炼人体平衡性的运动。
选择反应时是一个很敏锐的反应变量指标,是作为测量反应速度快慢及反应前后心理活动过程的客
观指标。 选择反应时能体现人的智力和能力,也可作为一种可靠的心理活动指标,测定大脑皮层的
兴奋和抑制功能,分析人的感觉,注意学习与记忆思维个性差别等各种心理活动。
您的成绩较低,可以参与针对性体育运动来提高反应速度和心理因素等方面的能力,比如太极拳,
瑜伽等。
台阶指数是用来评价心肺功能适应水平的方法。研究表明:心肺适应能力强的人比心肺适应能力弱
的人在运动后3分钟恢复期内心跳频率低。研究表明:心肺适应能力强的人比心肺适应能力弱的人
在运动后3分钟恢复期内心跳频率低。 台阶指数也是反映人体心血管系统机能状况的重要指数。台
阶试验指数值越大,则反映你心血管系统的机能水平越高,反之亦然,不过具体情况还要视被测人
的身高、体重和肺活量而定。
您的指数较好,在一定程度上反映出心血管系统机能很好,心肺适应能力较强。你的血液循环系统
工作正常——你的血管是健康的。请继续保持良好的生活习惯。
俯卧撑属于一种比较全面的锻炼方式,主要锻炼的是肱三头肌、腹肌等上肢肌肉,可以起到健美身
型的效果。同时能够加强心肺功能,促进身体血液循环,减少患病的比率。 俯卧撑对发展平衡和支
撑能力也起重要作用。可以改善中枢神经系统,有益于骨骼的坚实,关节的灵活,韧带的牢固,肌
肉的粗壮及弹性,同时能加速血液循环,增大肺活量,促进生长发育,提高运动能力。 结合身体情
况经常做俯卧撑,能让人心情放松,精力充沛,更好的投入到工作学习中。另外,俯卧撑对于消除
身体的赘肉也有一定效果,有利于减肥。
您的成绩良好,表明您肌肉力量等综合性表现良好。希望今后加强锻炼,注意保持。
3. 智慧健康方案
每个项目都与脏腑功能、人体八大系统能力息息相关,设法提高项目成绩,也可以改善潜在的亚健
康状态。
建议分类
建议项
您的身体状态非常好。几乎没有相关性较高的建议,希望您继续保持。系统会整合您的所有项目
成绩,依据相应年龄段、性别的每个项目与脏腑、经络、人体系统及子系统的权重和关系形成条
件,筛选出符合条件的所有身体机能成绩组合。特殊体质、职业(如运动相关)的人群可能存在
偏差,请以医院诊断为准。
In [14]:
import pdfplumber

# 读取 PDF 文档
pdf = pdfplumber.open("5.pdf")

# 获取页数
print("总页数:",len(pdf.pages))
print("-----------------------------------------")

# 读取第 4 页;索引从 1 开始
page = pdf.pages[4] 
print("本页:",page.page_number + 1)
print("-----------------------------------------")

# 导出第 4 页文本
text = page.extract_text()
print(text)
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-14-1ad7fc39921b> in <module>
----> 1 import pdfplumber
      2 
      3 # 读取 PDF 文档
      4 pdf = pdfplumber.open("5.pdf")
      5 

~/data/lib/python3.8/site-packages/pdfplumber/__init__.py in <module>
      8 
      9 from ._version import __version__
---> 10 from .pdf import PDF
     11 from . import utils
     12 import pdfminer

~/data/lib/python3.8/site-packages/pdfplumber/pdf.py in <module>
      7 import itertools
      8 from pdfminer.pdfparser import PDFParser
----> 9 from pdfminer.pdfdocument import PDFDocument
     10 from pdfminer.pdfpage import PDFPage
     11 from pdfminer.pdfinterp import PDFResourceManager

~/data/lib/python3.8/site-packages/pdfminer/pdfdocument.py in <module>
     12 from .psparser import PSEOF, literal_name, LIT, KWD
     13 from . import settings
---> 14 from .pdftypes import PDFException, uint_value, PDFTypeError, PDFStream, \
     15     PDFObjectNotFound, decipher_all, int_value, str_value, list_value, \
     16     dict_value, stream_value

ImportError: cannot import name 'uint_value' from 'pdfminer.pdftypes' (/home/songyi/data/lib/python3.8/site-packages/pdfminer/pdftypes.py)
In [18]:
import PyPDF2 
import textract

#open能让你读取文件
pdfFileObj = open('5.pdf','rb')
#变量pdfReader是即将被解析的可读对象
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
#分辨清楚页码数量能让我们解析所有页码的文件
num_pages = pdfReader.numPages
count = 0
text = ""
# while 循环会读取每一页
while count < num_pages:
    pageObj = pdfReader.getPage(count)
    count +=1
    text += pageObj.extractText()
#这里的if语句用以检查上面的库是否返回了词汇,因为PyPDF2 无法读取扫描文本
    if text != "":
        text = text
# 如果上面返回False,就运行库textract 将PDF扫描文件转换为文本
   
    print(text)
# 现在我们获得了一个text变量,包含了从PDF文件中提取的文本。
# 输入print(text)查看包含的内容。可能会包含很多空格,可能还有’\n’等这样的字眼。
# 下面我们会清洗得到的text变量,将其返回为一列关键字。
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚
`'R+u7”«ıØOS‚Í•ºm;‚ÏcáRłWPOMOSRM\H~µ“óSU†ˆzÙzËOïSgd‚^ú‰®Ÿy
In [ ]: