Python分析pdf簡歷

# -*- coding:utf-8 -*-


import pdfplumber #解析pdf文件,尤其帶有表格的文件
from openpyxl import Workbook #讀寫Excel的文件
import xlrd
from xlutils.copy import copy

    

# 解析:按照文字頁邊距判斷級別(標題或內容)
def parse(pdf):
    targets = {} #保存結果,key是簡歷左側內容,value是簡歷右側內容。
    for page in pdf.pages: 
        words = page.extract_words(x_tolerance=5) #兩頁,兩個列表
        #print(words)
        
        # 合併距離小於dis的單詞,主要是把同一行的東西寫在一起,比如街道名字和街道號碼肯定要寫在一起。通過給哈希表裏面添加鍵,值對。已經被使用過的就標記爲FALSE,完整的部分標記爲真。
        pre_x = words[0]['x1']  #x1是右邊距,x0是左邊距, hash['x1']= 355.490, 116.304
        pre_top = words[0]['top'] #hash['top'] = 68.012, 58.932,固定值
        #print(pre_top)
        tolerance = 5 #這個數字是超參數,根據經驗判斷的;
        for index, word in enumerate(words):
            words[index]['valid'] = True #給每一個Word都添加一個鍵值對;方便以後決定是否繼續添加,hash['valid'] = true;添加新的鍵值對,index = 0-19
            if index == 0:
                continue
            x0, top = word['x0'], word['top'] #68.064 107.912,每個元素的對應值。
            #print('x0, top', x0, top)
            text = word['text'] #獲取每個內容
            if abs(top - pre_top) < 1 and abs(x0 - pre_x) < tolerance: #合併同一行內的內容,比如:0176 和81470662(top相同,差<1,並且左右間隔小於5的字符串
                ppre = 0
                while not words[index - 1 - ppre]['valid']: #words[]= false,說明已經被使用過了,就不用繼續添加了
                    ppre += 1
                    print(ppre)
                words[index - 1 - ppre]['text'] += text
                print(words[index - 1 - ppre]['text'])
                words[index]['valid'] = False #被使用過的就標記爲FALSE
            pre_x = word['x1'] #更新數字
            pre_top = top
            


        #for index, word in enumerate(words):
            #words[index]['valid'] = True #給每一個Word都添加一個鍵值對;方便以後決定是否繼續添加,hash['valid'] = true;添加新的鍵值對,index = 0-19
        # 拆分重組,只添加標記爲true的部分內容
        distance = [int(word['x0']) for word in words] #對所有x0取整數,兩個列表
        #print(distance)
        first_dis = min(distance) #min 68
        #print(first_dis)
        cur_top = None #簡歷左側top
        cur_text = None #簡歷左側text
        pre_top = 0 #簡歷右側高度
        x_dis = 5 #簡歷左右內容距離
        #x_dis = 50
        y_dis = 3 #同一行高度差在3以內
        for word in words:
            #print(word['top'], word['text'])
            #if not word['valid']:  #word['valid'] = false,說明前面已經使用過了,這裏就不處理了
                #continue
            x0, top = word['x0'], word['top']
            text = word['text']
            #print('x0-first_dis', x0-first_dis)
            if abs(x0 - first_dis) < x_dis: #合併起來,主要通過距離區分key 和value部分
                targets[text] = '' 
                cur_text = text #簡歷左側內容
                cur_top = top #簡歷左側top
                pre = top
            elif cur_top is not None and cur_text is not None:
                if abs(cur_top - top) < y_dis: #在同一行內容相加,簡歷右側和簡歷左側高度比較
                    targets[cur_text] += text
                elif abs(pre_top - top) < y_dis: #簡歷右側同一高度添加到一起
                    targets[cur_text] += ' ' + text #保證右側內容能夠放在一行,例如:碩士論文課題: „Tribologische Untersuchung strukturierter
                else:
                    pre_top = top
                    targets[cur_text] += '\n' + text #保證右側一個內容塊的內容要添加,而不是隻添加右側第一行內容
                    #print(targets)
    #print(targets)
    return targets


# 保存
def save(targets, out_path, sheet_name='targets'):
    wb = Workbook()
    ws = wb.active
    ws.title = sheet_name
    #print(list(targets.keys()))
    ws.append(list(targets.keys()))
    ws.append(list(targets.values()))

    wb.save(out_path)


# 主函數入口
print(__doc__)
path = r'/Users/apple/Documents/ST/python/俞偉簡歷.pdf'
out_path = r'/Users/apple/Documents/ST/python/俞偉簡歷.xlsx'
pdf = pdfplumber.open(path)
targets = parse(pdf)
save(targets, out_path)

print('運行結束!')










'''
words兩列內容,
每頁是一列內容;每個列表由無數個字典組成,每個字典由一些key,value對組成;簡歷裏面的每個內容都會有一個字典包括,字典指明瞭這個內容的前後左右頁邊距;字典裏text對應的value就是pdf內容了,提取出來就行。
x0是text內容左側距離左邊的距離,x1是text內容右側距離左邊的距離;如何保證把左側放在表頭,右側放在表頭下面呢?
[{'x0': Decimal('251.090'), 'x1': Decimal('355.490'), 'top': Decimal('68.012'), 'bottom': Decimal('94.052'), 'text': '個人簡歷'}, {'x0': Decimal('68.064'), 'x1': Decimal('116.304'), 'top': Decimal('107.912'), 'bottom': Decimal('119.912'), 'text': '基本信息'}, {'x0': Decimal('68.064'), 'x1': Decimal('104.172'), 'top': Decimal('141.152'), 'bottom': Decimal('153.152'), 'text': '姓名:'}, {'x0': Decimal('215.090'), 'x1': Decimal('239.090'), 'top': Decimal('141.152'), 'bottom': Decimal('153.152'), 'text': '俞偉'}, {'x0': Decimal('68.064'), 'x1': Decimal('104.172'), 'top': Decimal('157.472'), 'bottom': Decimal('169.472'), 'text': '地址:'}, {'x0': Decimal('215.090'), 'x1': Decimal('290.426'), 'top': Decimal('154.616'), 'bottom': Decimal('170.372'), 'text': 'Vogelpothsweg'}, {'x0': Decimal('293.330'), 'x1': Decimal('305.330'), 'top': Decimal('154.616'), 'bottom': Decimal('170.372'), 'text': '82'}, {'x0': Decimal('215.090'), 'x1': Decimal('245.090'), 'top': Decimal('170.816'), 'bottom': Decimal('186.572'), 'text': '44227'}, {'x0': Decimal('248.090'), 'x1': Decimal('297.398'), 'top': Decimal('170.816'), 'bottom': Decimal('186.572'), 'text': 'Dortmund'}, {'x0': Decimal('68.064'), 'x1': Decimal('104.172'), 'top': Decimal('189.992'), 'bottom': Decimal('201.992'), 'text': '電話:'}, {'x0': Decimal('215.090'), 'x1': Decimal('239.090'), 'top': Decimal('187.136'), 'bottom': Decimal('202.892'), 'text': '0176'}, {'x0': Decimal('242.090'), 'x1': Decimal('290.090'), 'top': Decimal('187.136'), 'bottom': Decimal('202.892'), 'text': '81470662'}, {'x0': Decimal('68.064'), 'x1': Decimal('128.280'), 'top': Decimal('206.312'), 'bottom': Decimal('218.312'), 'text': '電子郵箱:'}, {'x0': Decimal('215.090'), 'x1': Decimal('333.722'), 'top': Decimal('203.456'), 'bottom': Decimal('219.212'), 'text': '[email protected]'}, {'x0': Decimal('68.064'), 'x1': Decimal('128.292'), 'top': Decimal('222.632'), 'bottom': Decimal('234.632'), 'text': '出生日期:'}, {'x0': Decimal('215.090'), 'x1': Decimal('278.090'), 'top': Decimal('219.776'), 'bottom': Decimal('235.532'), 'text': '1987年8月'}, {'x0': Decimal('68.064'), 'x1': Decimal('116.280'), 'top': Decimal('255.392'), 'bottom': Decimal('267.392'), 'text': '教育背景'}, {'x0': Decimal('68.064'), 'x1': Decimal('107.424'), 'top': Decimal('282.506'), 'bottom': Decimal('302.930'), 'text': '04/2011'}, {'x0': Decimal('110.420'), 'x1': Decimal('114.416'), 'top': Decimal('282.506'), 'bottom': Decimal('302.930'), 'text': '-'}, {'x0': Decimal('117.380'), 'x1': Decimal('156.740'), 'top': Decimal('282.506'), 'bottom': Decimal('302.930'), 'text': '08/2016'}, {'x0': Decimal('215.090'), 'x1': Decimal('311.090'), 'top': Decimal('289.622'), 'bottom': Decimal('301.622'), 'text': '多特蒙德工業大學'}, {'x0': Decimal('236.090'), 'x1': Decimal('416.110'), 'top': Decimal('305.942'), 'bottom': Decimal('317.942'), 'text': '機械工程學院,機械工程系,碩士'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('311.719'), 'bottom': Decimal('317.313'), 'text': '(cid:122)'}, {'x0': Decimal('236.090'), 'x1': Decimal('536.140'), 'top': Decimal('322.262'), 'bottom': Decimal('334.262'), 'text': '主修方向:機械加工技術,材料表面處理,機器自動化,'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('328.039'), 'bottom': Decimal('333.633'), 'text': '(cid:122)'}, {'x0': Decimal('296.090'), 'x1': Decimal('368.110'), 'top': Decimal('338.462'), 'bottom': Decimal('350.462'), 'text': '機械質量檢測'}, {'x0': Decimal('236.090'), 'x1': Decimal('311.426'), 'top': Decimal('351.926'), 'bottom': Decimal('367.682'), 'text': '碩士論文課題:'}, {'x0': Decimal('314.450'), 'x1': Decimal('386.290'), 'top': Decimal('351.530'), 'bottom': Decimal('367.682'), 'text': '„Tribologische'}, {'x0': Decimal('389.338'), 'x1': Decimal('456.754'), 'top': Decimal('351.926'), 'bottom': Decimal('367.682'), 'text': 'Untersuchung'}, {'x0': Decimal('459.700'), 'x1': Decimal('522.364'), 'top': Decimal('351.926'), 'bottom': Decimal('367.682'), 'text': 'strukturierter'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('360.559'), 'bottom': Decimal('366.153'), 'text': '(cid:122)'}, {'x0': Decimal('236.090'), 'x1': Decimal('268.718'), 'top': Decimal('368.246'), 'bottom': Decimal('384.002'), 'text': 'CrAlN'}, {'x0': Decimal('271.718'), 'x1': Decimal('289.718'), 'top': Decimal('368.246'), 'bottom': Decimal('384.002'), 'text': 'und'}, {'x0': Decimal('292.718'), 'x1': Decimal('333.398'), 'top': Decimal('368.246'), 'bottom': Decimal('384.002'), 'text': 'CrAlCN'}, {'x0': Decimal('336.398'), 'x1': Decimal('399.662'), 'top': Decimal('368.246'), 'bottom': Decimal('384.002'), 'text': 'beschichteter'}, {'x0': Decimal('402.602'), 'x1': Decimal('491.428'), 'top': Decimal('367.850'), 'bottom': Decimal('384.002'), 'text': 'Funktionsflächen“'}, {'x0': Decimal('494.380'), 'x1': Decimal('537.376'), 'top': Decimal('367.850'), 'bottom': Decimal('384.002'), 'text': '(基於Cr'}, {'x0': Decimal('236.090'), 'x1': Decimal('432.106'), 'top': Decimal('384.566'), 'bottom': Decimal('400.322'), 'text': '合金圖層以及表面結構對摩擦的影響)'}, {'x0': Decimal('68.064'), 'x1': Decimal('107.420'), 'top': Decimal('412.946'), 'bottom': Decimal('433.370'), 'text': '09/2009'}, {'x0': Decimal('110.420'), 'x1': Decimal('114.416'), 'top': Decimal('412.946'), 'bottom': Decimal('433.370'), 'text': '-'}, {'x0': Decimal('117.380'), 'x1': Decimal('156.740'), 'top': Decimal('412.946'), 'bottom': Decimal('433.370'), 'text': '12/2010'}, {'x0': Decimal('215.090'), 'x1': Decimal('359.110'), 'top': Decimal('420.062'), 'bottom': Decimal('432.062'), 'text': '多特蒙德工業大學語言中心'}, {'x0': Decimal('68.064'), 'x1': Decimal('107.424'), 'top': Decimal('445.486'), 'bottom': Decimal('465.910'), 'text': '09/2005'}, {'x0': Decimal('110.420'), 'x1': Decimal('114.416'), 'top': Decimal('445.486'), 'bottom': Decimal('465.910'), 'text': '-'}, {'x0': Decimal('117.380'), 'x1': Decimal('156.740'), 'top': Decimal('445.486'), 'bottom': Decimal('465.910'), 'text': '07/2009'}, {'x0': Decimal('215.090'), 'x1': Decimal('287.090'), 'top': Decimal('452.602'), 'bottom': Decimal('464.602'), 'text': '安徽工業大學'}, {'x0': Decimal('236.090'), 'x1': Decimal('488.140'), 'top': Decimal('468.922'), 'bottom': Decimal('480.922'), 'text': '機械工程學院,機械設計製造及其自動化,本科'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('474.699'), 'bottom': Decimal('480.293'), 'text': '(cid:122)'}, {'x0': Decimal('236.090'), 'x1': Decimal('512.140'), 'top': Decimal('485.242'), 'bottom': Decimal('497.242'), 'text': '本科論文課題:基於時域分析的齒輪箱故障診斷方法'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('491.019'), 'bottom': Decimal('496.613'), 'text': '(cid:122)'}, {'x0': Decimal('68.064'), 'x1': Decimal('107.400'), 'top': Decimal('510.766'), 'bottom': Decimal('531.190'), 'text': '09/1993'}, {'x0': Decimal('110.420'), 'x1': Decimal('114.416'), 'top': Decimal('510.766'), 'bottom': Decimal('531.190'), 'text': '-'}, {'x0': Decimal('117.380'), 'x1': Decimal('156.716'), 'top': Decimal('510.766'), 'bottom': Decimal('531.190'), 'text': '07/2005'}, {'x0': Decimal('215.090'), 'x1': Decimal('359.110'), 'top': Decimal('517.882'), 'bottom': Decimal('529.882'), 'text': '安徽省巢湖市皖維子弟學校'}, {'x0': Decimal('68.064'), 'x1': Decimal('152.420'), 'top': Decimal('566.842'), 'bottom': Decimal('578.842'), 'text': '實習和項目經歷'}, {'x0': Decimal('68.064'), 'x1': Decimal('107.400'), 'top': Decimal('593.926'), 'bottom': Decimal('614.350'), 'text': '04/2013'}, {'x0': Decimal('110.420'), 'x1': Decimal('114.416'), 'top': Decimal('593.926'), 'bottom': Decimal('614.350'), 'text': '-'}, {'x0': Decimal('117.380'), 'x1': Decimal('156.716'), 'top': Decimal('593.926'), 'bottom': Decimal('614.350'), 'text': '04/2014'}, {'x0': Decimal('215.090'), 'x1': Decimal('443.110'), 'top': Decimal('601.042'), 'bottom': Decimal('613.042'), 'text': '多特蒙德工業大學成型及輕量化設計研究所'}, {'x0': Decimal('236.090'), 'x1': Decimal('296.090'), 'top': Decimal('617.392'), 'bottom': Decimal('629.392'), 'text': '項目名稱:'}, {'x0': Decimal('298.610'), 'x1': Decimal('538.660'), 'top': Decimal('617.392'), 'bottom': Decimal('629.392'), 'text': '基於鋁箔瞬時蒸發的成型過程以及有限元分析'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('623.169'), 'bottom': Decimal('628.763'), 'text': '(cid:122)'}, {'x0': Decimal('236.090'), 'x1': Decimal('299.690'), 'top': Decimal('630.856'), 'bottom': Decimal('646.612'), 'text': '通過CATIA'}, {'x0': Decimal('302.690'), 'x1': Decimal('317.354'), 'top': Decimal('630.856'), 'bottom': Decimal('646.612'), 'text': 'V5'}, {'x0': Decimal('320.350'), 'x1': Decimal('338.350'), 'top': Decimal('630.856'), 'bottom': Decimal('646.612'), 'text': 'und'}, {'x0': Decimal('341.458'), 'x1': Decimal('355.330'), 'top': Decimal('630.856'), 'bottom': Decimal('646.612'), 'text': 'LS'}, {'x0': Decimal('358.510'), 'x1': Decimal('492.220'), 'top': Decimal('630.856'), 'bottom': Decimal('646.612'), 'text': 'DYNA軟件進行模擬建模'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('639.489'), 'bottom': Decimal('645.083'), 'text': '(cid:122)'}, {'x0': Decimal('236.090'), 'x1': Decimal('524.140'), 'top': Decimal('650.032'), 'bottom': Decimal('662.032'), 'text': '設計實驗所需要的構架和製作,通過實驗獲得數據結果'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('655.809'), 'bottom': Decimal('661.403'), 'text': '(cid:122)'}, {'x0': Decimal('236.090'), 'x1': Decimal('500.140'), 'top': Decimal('666.352'), 'bottom': Decimal('678.352'), 'text': '通過比較模擬和實驗結果驗證有限元模擬的準確性'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('672.129'), 'bottom': Decimal('677.723'), 'text': '(cid:122)'}, {'x0': Decimal('68.064'), 'x1': Decimal('107.420'), 'top': Decimal('691.756'), 'bottom': Decimal('712.180'), 'text': '04/2013'}, {'x0': Decimal('110.420'), 'x1': Decimal('114.416'), 'top': Decimal('691.756'), 'bottom': Decimal('712.180'), 'text': '-'}, {'x0': Decimal('117.380'), 'x1': Decimal('156.740'), 'top': Decimal('691.756'), 'bottom': Decimal('712.180'), 'text': '07/2013'}, {'x0': Decimal('215.090'), 'x1': Decimal('395.110'), 'top': Decimal('698.872'), 'bottom': Decimal('710.872'), 'text': '多特蒙德工業大學切削成型研究所'}, {'x0': Decimal('236.090'), 'x1': Decimal('287.426'), 'top': Decimal('712.336'), 'bottom': Decimal('728.092'), 'text': '項目名稱:'}, {'x0': Decimal('293.450'), 'x1': Decimal('497.500'), 'top': Decimal('715.192'), 'bottom': Decimal('727.192'), 'text': '基於力測量下切削刀頭轉動過程的優化'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('720.969'), 'bottom': Decimal('726.563'), 'text': '(cid:122)'}, {'x0': Decimal('236.090'), 'x1': Decimal('380.110'), 'top': Decimal('731.512'), 'bottom': Decimal('743.512'), 'text': '制定實驗計劃以及實驗操作'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('737.289'), 'bottom': Decimal('742.883'), 'text': '(cid:122)'}, {'x0': Decimal('236.090'), 'x1': Decimal('392.110'), 'top': Decimal('747.828'), 'bottom': Decimal('759.828'), 'text': '通過電子顯微鏡分析實驗結果'}, {'x0': Decimal('215.090'), 'x1': Decimal('218.855'), 'top': Decimal('753.605'), 'bottom': Decimal('759.199'), 'text': '(cid:122)'}]
[{'x0': Decimal('68.064'), 'x1': Decimal('116.304'), 'top': Decimal('58.932'), 'bottom': Decimal('70.932'), 'text': '其他技能'}, {'x0': Decimal('89.064'), 'x1': Decimal('170.420'), 'top': Decimal('90.416'), 'bottom': Decimal('106.172'), 'text': '熟練運用Word,'}, {'x0': Decimal('173.420'), 'x1': Decimal('203.744'), 'top': Decimal('90.416'), 'bottom': Decimal('106.172'), 'text': 'Excel,'}, {'x0': Decimal('206.648'), 'x1': Decimal('290.450'), 'top': Decimal('90.416'), 'bottom': Decimal('106.172'), 'text': 'PPT等辦公軟件'}, {'x0': Decimal('68.064'), 'x1': Decimal('71.829'), 'top': Decimal('99.049'), 'bottom': Decimal('104.643'), 'text': '(cid:122)'}, {'x0': Decimal('89.064'), 'x1': Decimal('165.416'), 'top': Decimal('106.736'), 'bottom': Decimal('122.492'), 'text': '熟練運動Catia'}, {'x0': Decimal('168.380'), 'x1': Decimal('186.044'), 'top': Decimal('106.736'), 'bottom': Decimal('122.492'), 'text': 'V5,'}, {'x0': Decimal('189.044'), 'x1': Decimal('241.328'), 'top': Decimal('106.736'), 'bottom': Decimal('122.492'), 'text': 'AutoCAD,'}, {'x0': Decimal('244.436'), 'x1': Decimal('258.188'), 'top': Decimal('106.736'), 'bottom': Decimal('122.492'), 'text': 'LS'}, {'x0': Decimal('261.224'), 'x1': Decimal('455.110'), 'top': Decimal('106.736'), 'bottom': Decimal('122.492'), 'text': 'DYNA等機械設計和有限元模擬軟件'}, {'x0': Decimal('68.064'), 'x1': Decimal('71.829'), 'top': Decimal('115.369'), 'bottom': Decimal('120.963'), 'text': '(cid:122)'}, {'x0': Decimal('89.064'), 'x1': Decimal('141.980'), 'top': Decimal('122.936'), 'bottom': Decimal('138.692'), 'text': '德語B2,'}, {'x0': Decimal('147.980'), 'x1': Decimal('220.130'), 'top': Decimal('122.936'), 'bottom': Decimal('138.692'), 'text': '大學英語4級'}, {'x0': Decimal('68.064'), 'x1': Decimal('71.829'), 'top': Decimal('131.569'), 'bottom': Decimal('137.163'), 'text': '(cid:122)'}, {'x0': Decimal('68.064'), 'x1': Decimal('116.304'), 'top': Decimal('158.552'), 'bottom': Decimal('170.552'), 'text': '興趣愛好'}, {'x0': Decimal('68.064'), 'x1': Decimal('224.090'), 'top': Decimal('192.752'), 'bottom': Decimal('204.752'), 'text': '電腦技術,足球,籃球,游泳'}, {'x0': Decimal('98.064'), 'x1': Decimal('122.060'), 'top': Decimal('311.702'), 'bottom': Decimal('323.702'), 'text': '俞偉'}, {'x0': Decimal('386.110'), 'x1': Decimal('435.418'), 'top': Decimal('308.846'), 'bottom': Decimal('324.602'), 'text': 'Dortmund'}, {'x0': Decimal('68.064'), 'x1': Decimal('207.780'), 'top': Decimal('320.846'), 'bottom': Decimal('336.602'), 'text': '-----------------------------------'}, {'x0': Decimal('358.030'), 'x1': Decimal('513.586'), 'top': Decimal('320.846'), 'bottom': Decimal('336.602'), 'text': '---------------------------------------'}]
運行結束!
[Finished in 1.0s]

words[0]
解析PDF文件,根據文字頁邊距判斷等級關係,最終內容保存到Excel....
{'x0': Decimal('251.090'), 'x1': Decimal('355.490'), 'top': Decimal('68.012'), 'bottom': Decimal('94.052'), 'text': '個人簡歷'}
{'x0': Decimal('68.064'), 'x1': Decimal('116.304'), 'top': Decimal('58.932'), 'bottom': Decimal('70.932'), 'text': '其他技能'}
運行結束!
[Finished in 0.9s]

print(words[index])內容,只不過添加了一個標記,valid,true

{'x0': Decimal('251.090'), 'x1': Decimal('355.490'), 'top': Decimal('68.012'), 'bottom': Decimal('94.052'), 'text': '個人簡歷', 'valid': True}

distance:
[251, 68, 68, 215, 68, 215, 293, 215, 248, 68, 215, 242, 68, 215, 68, 215, 68, 68, 110, 117, 215, 236, 215, 236, 215, 296, 236, 314, 389, 459, 215, 236, 271, 292, 336, 402, 494, 236, 68, 110, 117, 215, 68, 110, 117, 215, 236, 215, 236, 215, 68, 110, 117, 215, 68, 68, 110, 117, 215, 236, 298, 215, 236, 302, 320, 341, 358, 215, 236, 215, 236, 215, 68, 110, 117, 215, 236, 293, 215, 236, 215, 236, 215]
[68, 89, 173, 206, 68, 89, 168, 189, 244, 261, 68, 89, 147, 68, 68, 68, 98, 386, 68, 358]
運行結束!
[Finished in 1.0s]

#print(cur_text)
None


[Finished in 1.0s]

targets[cur_text] += text
targets[cur_text] += '\n' + text
None

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章