문서수정기호관련(2-29.30) 편집 채점기준 수정

This commit is contained in:
devdra9
2025-01-24 18:26:33 +09:00
parent 16b919c83c
commit c292769b78
3 changed files with 3 additions and 355 deletions

View File

@@ -1,55 +0,0 @@
from pathlib import Path
from lxml import etree as ET
import base64
import re
class binaryToChartxml:
def __init__(self, xml_path):
self.tree = ET.parse(xml_path)
self.root = self.tree.getroot()
def decoding_bindata(self):
binary_data = self.root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
binary_data = binary_data[0].encode('utf-8')
encoded_data = re.sub(b'<BINDATA.*?>', b'', binary_data)
# print(encoded_data)
encoded_data = encoded_data.replace(b'</BINDATA>', b'')
encoded_data = encoded_data.replace(b'\r\n', b'')
# base64 디코딩을 수행합니다.
decoded_data = base64.b64decode(encoded_data+b'==')
print(decoded_data)
# 디코딩된 데이터 내용 중 xml 형식만 추출할 때 <c:chartSpace>, </c:chartSpace> 사이의 데이터만 추출.
start = decoded_data.find(b'<?xml')
# print(start)
end = decoded_data.find(b'</c:chartSpace>')
# print(end)
self.xml_data = decoded_data[start:end+len(b'</c:chartSpace>')]
# def save_chart_xml(self, xml_output_path):
# def save_chart_xml(self):
# with open(, 'wb') as file:
# file.write(self.xml_data)
# xml 파일 읽기
# xml_path = r"C:\Users\dra\project\HWP-Scoring\output\워드(한글)-009865-고미송.hml"
# tree = ET.parse(xml_path)
# root = tree.getroot()
# # xpath로 바이너리 부분추출
# binary_data = root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
# binary_data = str(binary_data[0])
# print(f'binary : {binary_data}')
# # base64 디코딩
# decoded_data = base64.b64decode(binary_data)
# # 디코딩된 데이터를 파일로 저장
# output_file = f"decoded_output_test.bin"
# with open(output_file, "wb") as decoded_file:
# decoded_file.write(decoded_data)

View File

@@ -1,297 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<c:chartSpace xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart">
<c:date1904 val="0"/>
<c:roundedCorners val="0"/>
<mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
<mc:Choice xmlns:c14="http://schemas.microsoft.com/office/drawing/2007/8/2/chart" Requires="c14">
<c14:style val="102"/>
</mc:Choice>
<mc:Fallback>
<c:style val="2"/>
</mc:Fallback>
</mc:AlternateContent>
<c:chart>
<c:title>
<c:tx>
<c:rich>
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
<a:p>
<a:pPr algn="l">
<a:defRPr sz="1400" b="1" i="0" u="none">
<a:solidFill>
<a:srgbClr val="000000"/>
</a:solidFill>
<a:latin typeface="돋움체"/>
<a:ea typeface="돋움체"/>
<a:cs typeface="돋움체"/>
<a:sym typeface="돋움체"/>
</a:defRPr>
</a:pPr>
<a:r>
<a:rPr sz="1400" b="1" i="0" u="none">
<a:solidFill>
<a:srgbClr val="000000"/>
</a:solidFill>
<a:latin typeface="돋움체"/>
<a:ea typeface="돋움체"/>
<a:cs typeface="돋움체"/>
<a:sym typeface="돋움체"/>
</a:rPr>
<a:t>과일야채 항산화지수 비교</a:t>
</a:r>
<a:endParaRPr/>
</a:p>
</c:rich>
</c:tx>
<c:layout>
<c:manualLayout>
<c:xMode val="edge"/>
<c:yMode val="edge"/>
<c:x val="0.10400000214576721191"/>
<c:y val="0.03550000116229057312"/>
<c:w val="0.79175001382827758789"/>
<c:h val="0.13300000131130218506"/>
</c:manualLayout>
</c:layout>
<c:overlay val="0"/>
<c:spPr>
<a:noFill/>
</c:spPr>
</c:title>
<c:autoTitleDeleted val="0"/>
<c:plotArea>
<c:layout>
<c:manualLayout>
<c:layoutTarget val="inner"/>
<c:xMode val="edge"/>
<c:yMode val="edge"/>
<c:x val="0.03249999880790710449"/>
<c:y val="0.19900000095367431641"/>
<c:w val="0.92449998855590820313"/>
<c:h val="0.59175002574920654297"/>
</c:manualLayout>
</c:layout>
<c:barChart>
<c:barDir val="col"/>
<c:grouping val="clustered"/>
<c:varyColors val="0"/>
<c:ser>
<c:idx val="0"/>
<c:order val="0"/>
<c:tx>
<c:strRef>
<c:f>항산화지수(100g당)</c:f>
<c:strCache>
<c:ptCount val="1"/>
<c:pt idx="0">
<c:v>항산화지수(100g당)</c:v>
</c:pt>
</c:strCache>
</c:strRef>
</c:tx>
<c:spPr>
<a:solidFill>
<a:srgbClr val="73b1d1"/>
</a:solidFill>
<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
<a:noFill/>
<a:prstDash val="solid"/>
<a:round/>
<a:headEnd w="med" len="med"/>
<a:tailEnd w="med" len="med"/>
</a:ln>
</c:spPr>
<c:invertIfNegative val="0"/>
<c:cat>
<c:strRef>
<c:f>{"블루베리", "딸기", "자두", "오렌지", "시금치", "양배추"}</c:f>
<c:strCache>
<c:ptCount val="6"/>
<c:pt idx="0">
<c:v>블루베리</c:v>
</c:pt>
<c:pt idx="1">
<c:v>딸기</c:v>
</c:pt>
<c:pt idx="2">
<c:v>자두</c:v>
</c:pt>
<c:pt idx="3">
<c:v>오렌지</c:v>
</c:pt>
<c:pt idx="4">
<c:v>시금치</c:v>
</c:pt>
<c:pt idx="5">
<c:v>양배추</c:v>
</c:pt>
</c:strCache>
</c:strRef>
</c:cat>
<c:val>
<c:numLit>
<c:formatCode>General</c:formatCode>
<c:ptCount val="6"/>
<c:pt idx="0">
<c:v>2400</c:v>
</c:pt>
<c:pt idx="1">
<c:v>1540</c:v>
</c:pt>
<c:pt idx="2">
<c:v>949</c:v>
</c:pt>
<c:pt idx="3">
<c:v>750</c:v>
</c:pt>
<c:pt idx="4">
<c:v>1260</c:v>
</c:pt>
<c:pt idx="5">
<c:v>980</c:v>
</c:pt>
</c:numLit>
</c:val>
</c:ser>
<c:gapWidth val="100"/>
<c:overlap val="0"/>
<c:axId val="0"/>
<c:axId val="1"/>
</c:barChart>
<c:catAx>
<c:axId val="0"/>
<c:scaling>
<c:orientation val="minMax"/>
</c:scaling>
<c:axPos val="b"/>
<c:crossAx val="1"/>
<c:delete val="0"/>
<c:majorTickMark val="none"/>
<c:minorTickMark val="none"/>
<c:tickLblPos val="nextTo"/>
<c:txPr>
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
<a:p>
<a:pPr algn="l">
<a:defRPr sz="900" b="0" i="1" u="none">
<a:solidFill>
<a:srgbClr val="000000"/>
</a:solidFill>
<a:latin typeface="돋움"/>
<a:ea typeface="돋움"/>
<a:cs typeface="돋움"/>
<a:sym typeface="돋움"/>
</a:defRPr>
</a:pPr>
<a:endParaRPr/>
</a:p>
</c:txPr>
<c:crosses val="autoZero"/>
<c:auto val="1"/>
<c:lblAlgn val="ctr"/>
<c:lblOffset val="100"/>
<c:tickLblSkip val="1"/>
<c:tickMarkSkip val="1"/>
<c:noMultiLvlLbl val="0"/>
</c:catAx>
<c:valAx>
<c:axId val="1"/>
<c:scaling>
<c:orientation val="minMax"/>
</c:scaling>
<c:axPos val="l"/>
<c:crossAx val="0"/>
<c:delete val="0"/>
<c:numFmt formatCode="General" sourceLinked="1"/>
<c:majorTickMark val="out"/>
<c:minorTickMark val="none"/>
<c:tickLblPos val="nextTo"/>
<c:txPr>
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
<a:p>
<a:pPr algn="l">
<a:defRPr sz="900" b="0" i="1" u="none">
<a:solidFill>
<a:srgbClr val="000000"/>
</a:solidFill>
<a:latin typeface="돋움"/>
<a:ea typeface="돋움"/>
<a:cs typeface="돋움"/>
<a:sym typeface="돋움"/>
</a:defRPr>
</a:pPr>
<a:endParaRPr/>
</a:p>
</c:txPr>
<c:crosses val="autoZero"/>
<c:crossBetween val="between"/>
</c:valAx>
<c:spPr>
<a:noFill/>
<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
<a:noFill/>
<a:prstDash val="solid"/>
<a:round/>
<a:headEnd w="med" len="med"/>
<a:tailEnd w="med" len="med"/>
</a:ln>
</c:spPr>
</c:plotArea>
<c:legend>
<c:legendPos val="b"/>
<c:layout/>
<c:overlay val="0"/>
<c:spPr>
<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
<a:solidFill>
<a:prstClr val="black"/>
</a:solidFill>
<a:prstDash val="solid"/>
<a:round/>
<a:headEnd w="med" len="med"/>
<a:tailEnd w="med" len="med"/>
</a:ln>
</c:spPr>
<c:txPr>
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
<a:p>
<a:pPr algn="l">
<a:defRPr sz="900" b="0" i="1" u="none">
<a:solidFill>
<a:srgbClr val="000000"/>
</a:solidFill>
<a:latin typeface="돋움"/>
<a:ea typeface="돋움"/>
<a:cs typeface="돋움"/>
<a:sym typeface="돋움"/>
</a:defRPr>
</a:pPr>
<a:endParaRPr/>
</a:p>
</c:txPr>
</c:legend>
<c:plotVisOnly val="1"/>
<c:dispBlanksAs val="gap"/>
</c:chart>
<c:spPr>
<a:solidFill>
<a:srgbClr val="ffffff"/>
</a:solidFill>
<a:ln w="12700" cap="flat" cmpd="sng" algn="ctr">
<a:solidFill>
<a:srgbClr val="8c8c8c"/>
</a:solidFill>
<a:prstDash val="solid"/>
<a:round/>
<a:headEnd w="med" len="med"/>
<a:tailEnd w="med" len="med"/>
</a:ln>
</c:spPr>
<c:extLst>
<c:ext uri="CC8EB2C9-7E31-499d-B8F2-F6CE61031016">
<ho:hncChartStyle xmlns:ho="http://schemas.haansoft.com/office/8.0" layoutIndex="-1" colorIndex="0" styleIndex="0"/>
</c:ext>
</c:extLst>
</c:chartSpace>

View File

@@ -469,7 +469,7 @@
},
"2-25":{
"path": "boolean(//CHAR[contains(text(),'MZ세대')]/following-sibling::FOOTNOTE/descendant::CHAR[contains(text(),'밀레니얼 세대와 Z세대를 통틀어 지칭하는 신조어')])",
"path2": null,
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('MZ세대') + 1) = 'MZ세대']/following-sibling::FOOTNOTE/descendant::CHAR[contains(text(),'밀레니얼 세대와 Z세대를 통틀어 지칭하는 신조어')])",
"searchValue": null,
"value":true,
"points": 3,
@@ -577,7 +577,7 @@
},
"2-37":{
"path":"boolean(//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER[@Type='DoubleSlim' and @Width='0.5mm'])",
"path2": null,
"path2": "boolean(//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr='2']/@BorderFill]/BOTTOMBORDER[@Type='DoubleSlim' and @Width='0.5mm'])",
"searchValue": null,
"value":true,
"points": 2,