Files
jupyter/围棋点校文献/文件处理.ipynb
T
2024-07-15 23:14:31 +08:00

6.4 KiB

选择白子黑子图片

In [26]:
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 [27]:
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}*.txt')
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

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()

list1 = []
filepath = '文本文件/'
files = glob.glob(f'{filepath}*.txt')
for fn in files:
    with open(fn, "r") as f:
        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(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('弈理析疑1.docx')
In [ ]: