Files
jupyter/围棋点校文献/文件处理.ipynb
T
2024-08-28 22:46:30 +08:00

7.3 KiB

选择白子黑子图片

In [ ]:
import glob
import os,shutil
from pathlib import Path

filepath = 'img/白/'

files = glob.glob(f'{filepath}*.jpg')
for fn in files:
    fi_name =Path(fn).stem
    if int(fi_name) % 2 !=0:
        shutil.copy(fn, './img')
In [ ]:
import glob
import os,shutil
from pathlib import Path

filepath = 'img/黑/'

files = glob.glob(f'{filepath}*.jpg')
for fn in files:
    fi_name =Path(fn).stem
    if int(fi_name) % 2 ==0:
        shutil.copy(fn, './img')

棋子替代

In [ ]:
import glob
import os,shutil
from pathlib import Path
import re

def find_all_numbers(text):
    return re.findall(r'\d+', text)

def replace_numbers(text):
    pattern = r'\d+'
    replacement = lambda x:'{{ '+ f'img_{x.group()}'+' }}'
    modified_text = re.sub(pattern, replacement, text)
    return modified_text

def replace_numbers_with_braces(text):
    # 使用正则表达式查找连续的数字
    pattern = re.compile(r'\d+')
    
    # 使用re.sub()进行替换
    result = pattern.sub(lambda x: f"{{{{ img_{x.group(0)} }}}}", text)
    
    return result

list1 = []
filepath = '文本文件/'
files = glob.glob(f'{filepath}*.md')
for fn in files:
    with open(fn, "r") as f:
        data = f.readlines()
        for s in data:
            ss = replace_numbers_with_braces(s)
            list1 = find_all_numbers(ss)
            list1 = list(set(list1))
            list1.sort()
            print(ss,list1)
In [ ]:
import glob
import os,shutil
from pathlib import Path
import re
from docx import Document
import openpyxl
from docxtpl import DocxTemplate,InlineImage
from docx.shared import Mm

def find_all_numbers(text):
    return re.findall(r'\d+', text)

def replace_numbers(text):
    pattern = r'\d+'
    replacement = lambda x:'{{ '+ f'img_{x.group()}'+' }}'
    modified_text = re.sub(pattern, replacement, text)
    return modified_text

def replace_numbers_with_braces(text):
    # 使用正则表达式查找连续的数字
    pattern = re.compile(r'\d+')
    
    # 使用re.sub()进行替换
    result = pattern.sub(lambda x: f"{{{{ img_{x.group(0)} }}}}", text)
    
    return result
#doc = Document()


filepath = '文本文件/'
files = glob.glob(f'{filepath}*.txt')
for fn in files:
    p = Path(fn)
    with open(fn, "r") as f:
        list1 = []
        doc = Document()
        paragraph3 = doc.add_paragraph()
        data = f.readlines()
        for s in data:
            list2 = []
            ss = replace_numbers_with_braces(s)
            list2 = find_all_numbers(s)
            if len(list2)>0:
                for item in list2:
                    list1.append(item)
            
            list1 = list(set(list1))
            list1.sort()
            #paragraph3 = doc.add_paragraph()
            paragraph3.add_run(ss.replace('\r', ''))
        print(p.stem)
        print(list1)
        if len(list1) >0:
            #paragraph3 = doc.add_paragraph()
            #paragraph3.add_run(ss.replace('\r', ''))
            doc.save(f'./templete/{p.stem}.docx')
            dict1 = {}
            tpl = DocxTemplate(f'./templete/{p.stem}.docx')
            for item in list1:
                dict1['img_'+str(item)] = InlineImage(tpl, image_descriptor=f'./img/{str(item)}.jpg',width=Mm(4))
            tpl.render(dict1)
            tpl.save(f'./docx/{p.stem}.docx')
#print(list1)
#doc.save('离垢居谈棋.docx')
In [ ]:
import openpyxl
from docxtpl import DocxTemplate,InlineImage
from docx.shared import Mm

dict1 = {}

tpl = DocxTemplate("离垢居谈棋.docx")
for item in list1:    
    dict1['img_'+str(item)] = InlineImage(tpl, image_descriptor=f'./img/黑先/{str(item)}.jpg',width=Mm(4))
#dict1['img_radar'] = InlineImage(tpl, image_descriptor=dict1['radar'])

tpl.render(dict1)
tpl.save('离垢居谈棋(黑先).docx')
In [ ]:
import openpyxl
from docxtpl import DocxTemplate,InlineImage
from docx.shared import Mm

dict1 = {}

tpl = DocxTemplate("离垢居谈棋.docx")
for item in list1:    
    dict1['img_'+str(item)] = InlineImage(tpl, image_descriptor=f'./img/白先/{str(item)}.jpg',width=Mm(4))
#dict1['img_radar'] = InlineImage(tpl, image_descriptor=dict1['radar'])

tpl.render(dict1)
tpl.save('离垢居谈棋(白先).docx')
In [ ]: