{"id":512,"date":"2025-09-09T19:35:33","date_gmt":"2025-09-09T10:35:33","guid":{"rendered":"http:\/\/qmac.kr\/wordpress\/?p=512"},"modified":"2025-09-09T19:35:33","modified_gmt":"2025-09-09T10:35:33","slug":"%eb%b0%b0%eb%93%9c%eb%af%bc%ed%84%b4-%ec%98%88%ec%84%a0%ea%b2%bd%ea%b8%b0-%ec%9d%bc%ec%a0%95%ec%9d%84-vs-code-ai-%ec%97%90%ec%84%9c-xlsx-%ed%8c%8c%ec%9d%bc-%ec%83%9d%ec%84%b1%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"http:\/\/qmac.kr\/wordpress\/%eb%b0%b0%eb%93%9c%eb%af%bc%ed%84%b4-%ec%98%88%ec%84%a0%ea%b2%bd%ea%b8%b0-%ec%9d%bc%ec%a0%95%ec%9d%84-vs-code-ai-%ec%97%90%ec%84%9c-xlsx-%ed%8c%8c%ec%9d%bc-%ec%83%9d%ec%84%b1%ed%95%98%ea%b8%b0\/","title":{"rendered":"\ubc30\ub4dc\ubbfc\ud134 \uc608\uc120\uacbd\uae30 \uc77c\uc815\uc744 VS Code AI \uc5d0\uc11c xlsx \ud30c\uc77c \uc0dd\uc131\ud558\uae30."},"content":{"rendered":"\n<p>\uc774 \ub178\ud2b8\ubd81 \ud30c\uc77c\uc740 \ubc30\ub4dc\ubbfc\ud134 \uacbd\uae30 \uc77c\uc815 \ub370\uc774\ud130\ub97c \ubd84\uc11d\ud558\uace0, \ub4dc\ub9bc\ud074\ub7fd\uc774 \ucc38\uc5ec\ud558\ub294 \uacbd\uae30\ub9cc \ucd94\ub824\uc11c \uc5d1\uc140 \ud30c\uc77c\ub85c \uc800\uc7a5\ud558\ub294 \uacfc\uc815\uc744 \ub2f4\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ucd08\ubcf4\uc790\ub97c \uc704\ud574 \uac01 \ub2e8\uacc4\ubcc4\ub85c \uc27d\uac8c \uc124\uba85\ub4dc\ub9ac\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ud544\uc694\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac \ubd88\ub7ec\uc624\uae30<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>pandas<\/code>, <code>numpy<\/code>, <code>re<\/code> \ub4f1 \ub370\uc774\ud130\ub97c \ub2e4\ub8e8\uae30 \uc704\ud55c \ud30c\uc774\uc36c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ubd88\ub7ec\uc635\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ud14d\uc2a4\ud2b8 \ud30c\uc77c\uc5d0\uc11c \ub370\uc774\ud130 \uc77d\uae30<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uacbd\uae30 \uc77c\uc815\uc774 \ub2f4\uae34 \ud14d\uc2a4\ud2b8 \ud30c\uc77c(0913.txt, 0914.txt)\uc744 \ud55c \uc904\uc529 \uc77d\uc5b4\uc635\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uacbd\uae30 \uc815\ubcf4 \ucd94\ucd9c<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uac01 \uc904\uc744 \ubd84\uc11d\ud574\uc11c \ucf54\ud2b8, \uacbd\uae30 \uc2dc\uac04, \uacbd\uae30\uc885\ubaa9, \ud074\ub7fd \uc774\ub984, \uc120\uc218 \uc774\ub984 \ub4f1 \ud544\uc694\ud55c \uc815\ubcf4\ub97c \ubf51\uc544\ub0c5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\ud55c \uacbd\uae30\uc758 \uc815\ubcf4\uac00 \ubaa8\ub450 \ubaa8\uc774\uba74 \ub9ac\uc2a4\ud2b8\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ub4dc\ub9bc\ud074\ub7fd \uacbd\uae30\ub9cc \ucd94\ub9ac\uae30<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc804\uccb4 \uacbd\uae30 \uc911\uc5d0\uc11c \ub4dc\ub9bc\ud074\ub7fd\uc774 \ucc38\uc5ec\ud55c \uacbd\uae30\ub9cc \uace8\ub77c\ub0c5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\ub9cc\uc57d \ub4dc\ub9bc\ud074\ub7fd\uc774 \uc0c1\ub300\ud300\uc73c\ub85c \ub098\uc628 \uacbd\uc6b0, \uc815\ubcf4\uc758 \uc704\uce58\ub97c \ubc14\uafd4\uc11c \ub4dc\ub9bc\ud074\ub7fd\uc774 \ud56d\uc0c1 &#8216;\ud074\ub7fd&#8217; \uce78\uc5d0 \uc624\ub3c4\ub85d \uc815\ub9ac\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ub370\uc774\ud130 \uc815\ub9ac \ubc0f \uac00\uacf5<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uacbd\uae30 \uc2dc\uac04 \uc21c\uc11c\ub300\ub85c \uc815\ub82c\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc120\uc218 \uc774\ub984\uc740 3\uae00\uc790\ub9c8\ub2e4 \uc27c\ud45c\ub85c \uad6c\ubd84\ud574\uc11c \ubcf4\uae30 \uc27d\uac8c \ub9cc\ub4ed\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uac01 \uacbd\uae30\ub9c8\ub2e4 \ubc88\ud638\ub97c \ubd99\uc785\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc6d0\ud558\ub294 \uc21c\uc11c\ub300\ub85c \uc5f4(\uceec\ub7fc)\uc744 \uc7ac\ubc30\uce58\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc5d1\uc140 \ud30c\uc77c\ub85c \uc800\uc7a5<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc815\ub9ac\ub41c \ub370\uc774\ud130\ub97c \uc5d1\uc140 \ud30c\uc77c\ub85c \uc800\uc7a5\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ud1a0<em>\uc608\uc120.xlsx, \uc77c<\/em>\uc608\uc120.xlsx \ub4f1\uc73c\ub85c \uc800\uc7a5\ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p>\uc774 \ub178\ud2b8\ubd81\uc744 \uc2e4\ud589\ud558\uba74, \ub4dc\ub9bc\ud074\ub7fd\uc774 \ucc38\uc5ec\ud558\ub294 \uacbd\uae30\ub9cc \uc2dc\uac04\uc21c\uc73c\ub85c \uc815\ub9ac\ub41c \uc5d1\uc140 \ud30c\uc77c\uc744 \uc790\ub3d9\uc73c\ub85c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br>\ucd08\ubcf4\uc790\ub3c4 \uac01 \uc140\uc744 \uc21c\uc11c\ub300\ub85c \uc2e4\ud589\ud558\uba74 \uacb0\uacfc\ub97c \uc27d\uac8c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br>\uad81\uae08\ud55c \ubd80\ubd84\uc774\ub098 \ub354 \uc54c\uace0 \uc2f6\uc740 \ub0b4\uc6a9\uc774 \uc788\uc73c\uba74 \uc5b8\uc81c\ub4e0 \uc9c8\ubb38\ud574 \uc8fc\uc138\uc694!<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Excel \ud30c\uc77c\ub85c \uc800\uc7a5<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">\ud14d\uc2a4\ud2b8 \ud30c\uc77c\uc5d0\uc11c \ub370\uc774\ud130 \uc77d\uae30<\/h1>\n\n\n\n<p>with open(&#8216;0914.txt&#8217;, &#8216;r&#8217;, encoding=&#8217;utf-8&#8242;) as file:<br>lines = file.readlines()<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\uacbd\uae30 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud560 \ub9ac\uc2a4\ud2b8<\/h1>\n\n\n\n<p>matches = []<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ub370\uc774\ud130 \ud30c\uc2f1<\/h1>\n\n\n\n<p>current_match = {}<br>for line in lines:<br>line = line.strip()<br>if not line:<br>continue<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if '\ucf54\ud2b8 - ' in line and '\uacbd\uae30' in line:\n    if current_match:\n        matches.append(current_match.copy())\n    current_match = {}\n    court_info = line.split(' - ')\n    current_match&#91;'\ucf54\ud2b8'] = court_info&#91;0]\n\nelif ':' in line:\n    current_match&#91;'\uc2dc\uac04'] = line\n\nelif '\uac1c\uc778\uc804' in line:\n    current_match&#91;'\uacbd\uae30\uc885\ubaa9'] = line\n\nelif any(club in line for club in &#91;'\ub4dc\ub9bc\ud074\ub7fd', '\ud568\ub9c8\ub8e8\ud074\ub7fd', '\uc2dc\ud654\ud074\ub7fd', '\ubaa9\uac10\ud074\ub7fd']):\n    club_name = line.strip()\n    if '\ud074\ub7fd' not in current_match:\n        current_match&#91;'\ud074\ub7fd'] = club_name\n        current_match&#91;'\uc120\uc218'] = ''\n    else:\n        current_match&#91;'\uc0c1\ub300\ud074\ub7fd'] = club_name\n        current_match&#91;'\uc0c1\ub300\uc120\uc218'] = ''\n\nelif line != '\uacbd\uae30\uc608\uc815' and not line.startswith('\ucf54\ud2b8'):\n    if '\uc120\uc218' not in current_match or not current_match&#91;'\uc120\uc218']:\n        current_match&#91;'\uc120\uc218'] = line\n    else:\n        current_match&#91;'\uc0c1\ub300\uc120\uc218'] = line<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\ub9c8\uc9c0\ub9c9 \uacbd\uae30 \ucd94\uac00<\/h1>\n\n\n\n<p>if current_match:<br>matches.append(current_match)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">DataFrame \uc0dd\uc131<\/h1>\n\n\n\n<p>df = pd.DataFrame(matches)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ub4dc\ub9bc\ud074\ub7fd \uacbd\uae30\ub9cc \ud544\ud130\ub9c1\ud558\uace0 \uc815\ubcf4 \uc7ac\uc815\ub82c<\/h1>\n\n\n\n<p>dream_club_matches = df[df[&#8216;\ud074\ub7fd&#8217;].str.contains(&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;) | df[&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;].str.contains(&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;)].copy()<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ub4dc\ub9bc\ud074\ub7fd\uc774 \uc0c1\ub300\ud074\ub7fd\uc778 \uacbd\uc6b0 \uc815\ubcf4 \uad50\ud658<\/h1>\n\n\n\n<p>mask = dream_club_matches[&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;].str.contains(&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;, na=False)<br>dream_club_matches.loc[mask, [&#8216;\ud074\ub7fd&#8217;, &#8216;\uc120\uc218&#8217;, &#8216;\uc0c1\ub300\ud074\ub7fd&#8217;, &#8216;\uc0c1\ub300\uc120\uc218&#8217;]] = \\<br>dream_club_matches.loc[mask, [&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;, &#8216;\uc0c1\ub300\uc120\uc218&#8217;, &#8216;\ud074\ub7fd&#8217;, &#8216;\uc120\uc218&#8217;]].values<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\uc2dc\uac04\uc21c\uc73c\ub85c \uc815\ub82c<\/h1>\n\n\n\n<p>dream_club_matches = dream_club_matches.sort_values(&#8216;\uc2dc\uac04&#8217;)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\uc120\uc218 \uc774\ub984 \ubd84\ub9ac (\uacf5\ubc31\uc744 \ucf64\ub9c8\ub85c \ubcc0\uacbd)<\/h1>\n\n\n\n<p>dream_club_matches[&#8216;\uc120\uc218&#8217;] = dream_club_matches[&#8216;\uc120\uc218&#8217;].str.replace(&#8216; &#8216;, &#8216;, &#8216;)<br>dream_club_matches[&#8216;\uc0c1\ub300\uc120\uc218&#8217;] = dream_club_matches[&#8216;\uc0c1\ub300\uc120\uc218&#8217;].str.replace(&#8216; &#8216;, &#8216;, &#8216;)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ubc88\ud638 \ucd94\uac00<\/h1>\n\n\n\n<p>dream_club_matches.insert(0, &#8216;\ubc88\ud638&#8217;, range(1, len(dream_club_matches) + 1))<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\uceec\ub7fc \uc21c\uc11c \uc7ac\uc815\ub82c<\/h1>\n\n\n\n<p>columns_order = [&#8216;\ubc88\ud638&#8217;, &#8216;\uc2dc\uac04&#8217;, &#8216;\uacbd\uae30\uc885\ubaa9&#8217;, &#8216;\ucf54\ud2b8&#8217;, &#8216;\ud074\ub7fd&#8217;, &#8216;\uc120\uc218&#8217;, &#8216;\uc0c1\ub300\ud074\ub7fd&#8217;, &#8216;\uc0c1\ub300\uc120\uc218&#8217;]<br>dream_club_matches = dream_club_matches[columns_order]<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\uacb0\uacfc \ucd9c\ub825<\/h1>\n\n\n\n<p>display(dream_club_matches)<\/p>\n\n\n\n<p>dream_club_matches.to_excel(&#8216;\ub4dc\ub9bc<em>\uc77c<\/em>\uc608\uc120\uacbd\uae30.xlsx&#8217;, index=False)<br>print(&#8216;\uc5d1\uc140 \ud30c\uc77c\uc774 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4: \ub4dc\ub9bc<em>\uc77c<\/em>\uc608\uc120\uacbd\uae30.xlsx&#8217;)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Excel \ud30c\uc77c\ub85c \uc800\uc7a5<\/h1>\n\n\n\n<p>dream_club_matches.to_excel(&#8216;\ub4dc\ub9bc<em>\uc77c<\/em>\uc608\uc120\uacbd\uae30.xlsx&#8217;, index=False)<br>print(&#8216;\uc5d1\uc140 \ud30c\uc77c\uc774 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4: \ub4dc\ub9bc<em>\uc77c<\/em>\uc608\uc120\uacbd\uae30.xlsx&#8217;)<\/p>\n\n\n\n<p>import pandas as pd<br>import re<\/p>\n\n\n\n<p>def split_name_by_three(name):<br># \ud55c\uae00 3\uae00\uc790\ub9c8\ub2e4 \uc27c\ud45c \ucd94\uac00<br>return &#8216;, &#8216;.join([name[i:i+3] for i in range(0, len(name), 3)])<\/p>\n\n\n\n<p>with open(&#8216;0913.txt&#8217;, &#8216;r&#8217;, encoding=&#8217;utf-8&#8242;) as file:<br>lines = file.readlines()<\/p>\n\n\n\n<p>matches = []<br>current_match = {}<br>for line in lines:<br>line = line.strip()<br>if not line:<br>continue<br># \ucf54\ud2b8 &#8211; \uba87\uacbd\uae30<br>if re.match(r&#8217;\\d+\ucf54\ud2b8 &#8211; \\d+\uacbd\uae30&#8217;, line):<br>if current_match:<br>matches.append(current_match.copy())<br>current_match = {}<br>current_match[&#8216;\ucf54\ud2b8 &#8211; \uba87\uacbd\uae30&#8217;] = line<br>elif &#8216;:&#8217; in line:<br>current_match[&#8216;\uc2dc\uac04&#8217;] = line<br>elif &#8216;\uac1c\uc778\uc804&#8217; in line:<br>current_match[&#8216;\uacbd\uae30\uc885\ubaa9&#8217;] = line<br>elif any(club in line for club in [&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;, &#8216;\ud568\ub9c8\ub8e8\ud074\ub7fd&#8217;, &#8216;\uc2dc\ud654\ud074\ub7fd&#8217;, &#8216;\ubaa9\uac10\ud074\ub7fd&#8217;]):<br>club_name = line.strip()<br>if &#8216;\ud074\ub7fd&#8217; not in current_match:<br>current_match[&#8216;\ud074\ub7fd&#8217;] = club_name<br>current_match[&#8216;\uc120\uc218&#8217;] = &#8221;<br>else:<br>current_match[&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;] = club_name<br>current_match[&#8216;\uc0c1\ub300\uc120\uc218&#8217;] = &#8221;<br>elif line != &#8216;\uacbd\uae30\uc608\uc815&#8217; and not line.startswith(&#8216;\ucf54\ud2b8&#8217;):<br>if &#8216;\uc120\uc218&#8217; not in current_match or not current_match[&#8216;\uc120\uc218&#8217;]:<br>current_match[&#8216;\uc120\uc218&#8217;] = line<br>else:<br>current_match[&#8216;\uc0c1\ub300\uc120\uc218&#8217;] = line<br>if current_match:<br>matches.append(current_match)<br>df = pd.DataFrame(matches)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ub4dc\ub9bc\ud074\ub7fd \uacbd\uae30\ub9cc \ud544\ud130\ub9c1<\/h1>\n\n\n\n<p>dream_club_matches = df[df[&#8216;\ud074\ub7fd&#8217;].str.contains(&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;) | df[&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;].str.contains(&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;)].copy()<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ub4dc\ub9bc\ud074\ub7fd\uc774 \uc0c1\ub300\ud074\ub7fd\uc778 \uacbd\uc6b0 \uc815\ubcf4 \uad50\ud658<\/h1>\n\n\n\n<p>mask = dream_club_matches[&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;].str.contains(&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;, na=False)<br>dream_club_matches.loc[mask, [&#8216;\ud074\ub7fd&#8217;, &#8216;\uc120\uc218&#8217;, &#8216;\uc0c1\ub300\ud074\ub7fd&#8217;, &#8216;\uc0c1\ub300\uc120\uc218&#8217;]] = \\<br>dream_club_matches.loc[mask, [&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;, &#8216;\uc0c1\ub300\uc120\uc218&#8217;, &#8216;\ud074\ub7fd&#8217;, &#8216;\uc120\uc218&#8217;]].values<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\uc2dc\uac04\uc21c\uc73c\ub85c \uc815\ub82c<\/h1>\n\n\n\n<p>dream_club_matches = dream_club_matches.sort_values(&#8216;\uc2dc\uac04&#8217;)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\uc120\uc218 \uc774\ub984 3\uae00\uc790\ub9c8\ub2e4 \uc27c\ud45c<\/h1>\n\n\n\n<p>dream_club_matches[&#8216;\uc120\uc218&#8217;] = dream_club_matches[&#8216;\uc120\uc218&#8217;].apply(split_name_by_three)<br>dream_club_matches[&#8216;\uc0c1\ub300\uc120\uc218&#8217;] = dream_club_matches[&#8216;\uc0c1\ub300\uc120\uc218&#8217;].apply(split_name_by_three)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ubc88\ud638 \ucd94\uac00<\/h1>\n\n\n\n<p>dream_club_matches.insert(0, &#8216;\ubc88\ud638&#8217;, range(1, len(dream_club_matches) + 1))<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\uceec\ub7fc \uc21c\uc11c \ubc0f \uc774\ub984 \ub9de\ucd94\uae30<\/h1>\n\n\n\n<p>columns_order = [&#8216;\ubc88\ud638&#8217;, &#8216;\uc2dc\uac04&#8217;, &#8216;\uacbd\uae30\uc885\ubaa9&#8217;, &#8216;\ucf54\ud2b8 &#8211; \uba87\uacbd\uae30&#8217;, &#8216;\ud074\ub7fd&#8217;, &#8216;\uc120\uc218&#8217;, &#8216;\uc0c1\ub300\ud074\ub7fd&#8217;, &#8216;\uc0c1\ub300\uc120\uc218&#8217;]<br>dream_club_matches = dream_club_matches[columns_order]<br>dream_club_matches.to_excel(&#8216;\ud1a0<em>\uc608\uc120.xlsx&#8217;, index=False) print(&#8216;\uc5d1\uc140 \ud30c\uc77c\uc774 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4: \ud1a0<\/em>\uc608\uc120.xlsx&#8217;)<\/p>\n\n\n\n<p>import pandas as pd<br>import re<\/p>\n\n\n\n<p>def split_name_by_three(name):<br>return &#8216;, &#8216;.join([name[i:i+3] for i in range(0, len(name), 3)])<\/p>\n\n\n\n<p>with open(&#8216;0914.txt&#8217;, &#8216;r&#8217;, encoding=&#8217;utf-8&#8242;) as file:<br>lines = file.readlines()<\/p>\n\n\n\n<p>matches = []<br>current_match = {}<br>for line in lines:<br>line = line.strip()<br>if not line:<br>continue<br>if re.match(r&#8217;\\d+\ucf54\ud2b8 &#8211; \\d+\uacbd\uae30&#8217;, line):<br>if current_match:<br>matches.append(current_match.copy())<br>current_match = {}<br>current_match[&#8216;\ucf54\ud2b8 &#8211; \uba87\uacbd\uae30&#8217;] = line<br>elif &#8216;:&#8217; in line:<br>current_match[&#8216;\uc2dc\uac04&#8217;] = line<br>elif &#8216;\uac1c\uc778\uc804&#8217; in line:<br>current_match[&#8216;\uacbd\uae30\uc885\ubaa9&#8217;] = line<br>elif any(club in line for club in [&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;, &#8216;\ud568\ub9c8\ub8e8\ud074\ub7fd&#8217;, &#8216;\uc2dc\ud654\ud074\ub7fd&#8217;, &#8216;\ubaa9\uac10\ud074\ub7fd&#8217;]):<br>club_name = line.strip()<br>if &#8216;\ud074\ub7fd&#8217; not in current_match:<br>current_match[&#8216;\ud074\ub7fd&#8217;] = club_name<br>current_match[&#8216;\uc120\uc218&#8217;] = &#8221;<br>else:<br>current_match[&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;] = club_name<br>current_match[&#8216;\uc0c1\ub300\uc120\uc218&#8217;] = &#8221;<br>elif line != &#8216;\uacbd\uae30\uc608\uc815&#8217; and not line.startswith(&#8216;\ucf54\ud2b8&#8217;):<br>if &#8216;\uc120\uc218&#8217; not in current_match or not current_match[&#8216;\uc120\uc218&#8217;]:<br>current_match[&#8216;\uc120\uc218&#8217;] = line<br>else:<br>current_match[&#8216;\uc0c1\ub300\uc120\uc218&#8217;] = line<br>if current_match:<br>matches.append(current_match)<br>df = pd.DataFrame(matches)<br>dream_club_matches = df[df[&#8216;\ud074\ub7fd&#8217;].str.contains(&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;) | df[&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;].str.contains(&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;)].copy()<br>mask = dream_club_matches[&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;].str.contains(&#8216;\ub4dc\ub9bc\ud074\ub7fd&#8217;, na=False)<br>dream_club_matches.loc[mask, [&#8216;\ud074\ub7fd&#8217;, &#8216;\uc120\uc218&#8217;, &#8216;\uc0c1\ub300\ud074\ub7fd&#8217;, &#8216;\uc0c1\ub300\uc120\uc218&#8217;]] = \\<br>dream_club_matches.loc[mask, [&#8216;\uc0c1\ub300\ud074\ub7fd&#8217;, &#8216;\uc0c1\ub300\uc120\uc218&#8217;, &#8216;\ud074\ub7fd&#8217;, &#8216;\uc120\uc218&#8217;]].values<br>dream_club_matches = dream_club_matches.sort_values(&#8216;\uc2dc\uac04&#8217;)<br>dream_club_matches[&#8216;\uc120\uc218&#8217;] = dream_club_matches[&#8216;\uc120\uc218&#8217;].apply(split_name_by_three)<br>dream_club_matches[&#8216;\uc0c1\ub300\uc120\uc218&#8217;] = dream_club_matches[&#8216;\uc0c1\ub300\uc120\uc218&#8217;].apply(split_name_by_three)<br>dream_club_matches.insert(0, &#8216;\ubc88\ud638&#8217;, range(1, len(dream_club_matches) + 1))<br>columns_order = [&#8216;\ubc88\ud638&#8217;, &#8216;\uc2dc\uac04&#8217;, &#8216;\uacbd\uae30\uc885\ubaa9&#8217;, &#8216;\ucf54\ud2b8 &#8211; \uba87\uacbd\uae30&#8217;, &#8216;\ud074\ub7fd&#8217;, &#8216;\uc120\uc218&#8217;, &#8216;\uc0c1\ub300\ud074\ub7fd&#8217;, &#8216;\uc0c1\ub300\uc120\uc218&#8217;]<br>dream_club_matches = dream_club_matches[columns_order]<br>dream_club_matches.to_excel(&#8216;\uc77c<em>\uc608\uc120.xlsx&#8217;, index=False) print(&#8216;\uc5d1\uc140 \ud30c\uc77c\uc774 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4: \uc77c<\/em>\uc608\uc120.xlsx&#8217;)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ub4dc\ub9bc\ud074\ub7fd \uacbd\uae30 \uc77c\uc815 \ubd84\uc11d \ub178\ud2b8\ubd81 \uc548\ub0b4 (\ucd08\ubcf4\uc790\uc6a9)<\/h1>\n\n\n\n<p>\uc774 \ub178\ud2b8\ubd81\uc740 \ubc30\ub4dc\ubbfc\ud134 \ub300\ud68c\uc5d0\uc11c \ub4dc\ub9bc\ud074\ub7fd\uc774 \ucc38\uac00\ud558\ub294 \uacbd\uae30 \uc77c\uc815\uc744 \uc815\ub9ac\ud558\uace0, \uc5d1\uc140 \ud30c\uc77c\ub85c \uc800\uc7a5\ud558\ub294 \uacfc\uc815\uc744 \ub2f4\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ucd08\ubcf4\uc790\ub3c4 \uc27d\uac8c \ub530\ub77c\ud560 \uc218 \uc788\ub3c4\ub85d \uac01 \ub2e8\uacc4\ubcc4\ub85c \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ud544\uc694\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac \ubd88\ub7ec\uc624\uae30<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ub370\uc774\ud130 \ubd84\uc11d\uc5d0 \ud544\uc694\ud55c \ud30c\uc774\uc36c \ub77c\uc774\ube0c\ub7ec\ub9ac(pandas, numpy \ub4f1)\ub97c \ubd88\ub7ec\uc635\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ud14d\uc2a4\ud2b8 \ud30c\uc77c\uc5d0\uc11c \ub370\uc774\ud130 \uc77d\uae30<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uacbd\uae30 \uc77c\uc815\uc774 \ub2f4\uae34 \ud14d\uc2a4\ud2b8 \ud30c\uc77c(\uc608: 0913.txt, 0914.txt)\uc744 \ud55c \uc904\uc529 \uc77d\uc5b4\uc635\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uacbd\uae30 \uc815\ubcf4 \ucd94\ucd9c<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uac01 \uc904\uc744 \ubd84\uc11d\ud574\uc11c \ucf54\ud2b8, \uc2dc\uac04, \uacbd\uae30\uc885\ubaa9, \ud074\ub7fd, \uc120\uc218 \ub4f1 \ud544\uc694\ud55c \uc815\ubcf4\ub97c \ubf51\uc544\ub0c5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\ud55c \uacbd\uae30\uc758 \uc815\ubcf4\uac00 \ubaa8\ub450 \ubaa8\uc774\uba74 \ub9ac\uc2a4\ud2b8\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ub4dc\ub9bc\ud074\ub7fd \uacbd\uae30\ub9cc \ucd94\ub9ac\uae30<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc804\uccb4 \uacbd\uae30 \uc911\uc5d0\uc11c \ub4dc\ub9bc\ud074\ub7fd\uc774 \ucc38\uc5ec\ud55c \uacbd\uae30\ub9cc \uace8\ub77c\ub0c5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\ub4dc\ub9bc\ud074\ub7fd\uc774 \uc0c1\ub300\ud300\uc73c\ub85c \ub098\uc628 \uacbd\uc6b0, \uc815\ubcf4\uc758 \uc704\uce58\ub97c \ubc14\uafd4\uc11c \ub4dc\ub9bc\ud074\ub7fd\uc774 \ud56d\uc0c1 &#8216;\ud074\ub7fd&#8217; \uce78\uc5d0 \uc624\ub3c4\ub85d \uc815\ub9ac\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\ub370\uc774\ud130 \uc815\ub9ac \ubc0f \uac00\uacf5<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uacbd\uae30 \uc2dc\uac04 \uc21c\uc11c\ub300\ub85c \uc815\ub82c\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc120\uc218 \uc774\ub984\uc740 \ubcf4\uae30 \uc27d\uac8c \uc27c\ud45c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uac01 \uacbd\uae30\ub9c8\ub2e4 \ubc88\ud638\ub97c \ubd99\uc785\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc6d0\ud558\ub294 \uc21c\uc11c\ub300\ub85c \uc5f4(\uceec\ub7fc)\uc744 \uc7ac\ubc30\uce58\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc5d1\uc140 \ud30c\uc77c\ub85c \uc800\uc7a5<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc815\ub9ac\ub41c \ub370\uc774\ud130\ub97c \uc5d1\uc140 \ud30c\uc77c\ub85c \uc800\uc7a5\ud569\ub2c8\ub2e4. (\uc608: \ud1a0<em>\uc608\uc120.xlsx, \uc77c<\/em>\uc608\uc120.xlsx \ub4f1)<\/li>\n<\/ul>\n\n\n\n<p>\uc774 \ub178\ud2b8\ubd81\uc744 \uc140 \uc21c\uc11c\ub300\ub85c \uc2e4\ud589\ud558\uba74 \ub4dc\ub9bc\ud074\ub7fd\uc774 \ucc38\uc5ec\ud558\ub294 \uacbd\uae30\ub9cc \uc2dc\uac04\uc21c\uc73c\ub85c \uc815\ub9ac\ub41c \uc5d1\uc140 \ud30c\uc77c\uc744 \uc790\ub3d9\uc73c\ub85c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uad81\uae08\ud55c \uc810\uc774 \uc788\uc73c\uba74 \uc5b8\uc81c\ub4e0 \uc9c8\ubb38\ud574 \uc8fc\uc138\uc694!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc774 \ub178\ud2b8\ubd81 \ud30c\uc77c\uc740 \ubc30\ub4dc\ubbfc\ud134 \uacbd\uae30 \uc77c\uc815 \ub370\uc774\ud130\ub97c \ubd84\uc11d\ud558\uace0, \ub4dc\ub9bc\ud074\ub7fd\uc774 \ucc38\uc5ec\ud558\ub294 \uacbd\uae30\ub9cc \ucd94\ub824\uc11c \uc5d1\uc140 \ud30c\uc77c\ub85c \uc800\uc7a5\ud558\ub294 \uacfc\uc815\uc744 \ub2f4\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ucd08\ubcf4\uc790\ub97c \uc704\ud574 \uac01 \ub2e8\uacc4\ubcc4\ub85c \uc27d\uac8c \uc124\uba85\ub4dc\ub9ac\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4: \uc774 \ub178\ud2b8\ubd81\uc744 \uc2e4\ud589\ud558\uba74, \ub4dc\ub9bc\ud074\ub7fd\uc774 \ucc38\uc5ec\ud558\ub294 \uacbd\uae30\ub9cc \uc2dc\uac04\uc21c\uc73c\ub85c \uc815\ub9ac\ub41c \uc5d1\uc140 \ud30c\uc77c\uc744 \uc790\ub3d9\uc73c\ub85c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\ucd08\ubcf4\uc790\ub3c4 \uac01 \uc140\uc744 \uc21c\uc11c\ub300\ub85c \uc2e4\ud589\ud558\uba74 \uacb0\uacfc\ub97c \uc27d\uac8c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\uad81\uae08\ud55c \ubd80\ubd84\uc774\ub098 \ub354 \uc54c\uace0 \uc2f6\uc740 \ub0b4\uc6a9\uc774 \uc788\uc73c\uba74 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,73,75],"tags":[],"class_list":["post-512","post","type-post","status-publish","format-standard","hentry","category-ai","category-openai","category-vs-code"],"_links":{"self":[{"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=512"}],"version-history":[{"count":1,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/512\/revisions"}],"predecessor-version":[{"id":513,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/512\/revisions\/513"}],"wp:attachment":[{"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=512"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}