Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_dailycode
提交
4c39ac9e
S
skill_tree_dailycode
项目概览
CSDN 技术社区
/
skill_tree_dailycode
通知
11
Star
4
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_dailycode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
4c39ac9e
编写于
11月 24, 2021
作者:
每日一练社区
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update dailycode pipline
上级
5aad7a46
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
146 addition
and
0 deletion
+146
-0
it_knowledge_helper.py
it_knowledge_helper.py
+146
-0
未找到文件。
it_knowledge_helper.py
0 → 100644
浏览文件 @
4c39ac9e
import
os
import
re
import
sys
import
uuid
import
json
import
shutil
def
get_files_path
(
file_dir
,
filetype
=
'.txt'
):
"""得到文件夹下的所有.txt文件的路径
Args:
file_dir: 文件夹路径
filetype: 文件后缀
Returns:
所有filetype类型文件的绝对路径
"""
files_path
=
[]
for
root
,
dirs
,
files
in
os
.
walk
(
file_dir
):
for
file
in
files
:
if
filetype
is
None
or
(
os
.
path
.
splitext
(
file
)[
1
]
==
filetype
):
files_path
.
append
(
os
.
path
.
join
(
root
,
file
))
return
files_path
def
load_json
(
path
):
""" load_json(path:str)->jsObject
从指定文件读取内容,解析为 json 返回
@param path: 文件路径
@return: 解析后的 json
"""
with
open
(
path
)
as
f
:
data
=
f
.
read
()
return
json
.
loads
(
data
)
def
dump_json
(
path
,
data
):
""" dump_json(path:str, data:obj)->None
从指定文件读取内容,解析为 json 返回
@param path: 文件路径
@param data: json 对象
@return: None
"""
with
open
(
path
,
"w+"
)
as
df
:
df
.
write
(
json
.
dumps
(
data
,
indent
=
2
,
ensure_ascii
=
False
))
def
extract_it_knowledge
():
data_dir
=
'data_backup/it_knowledge'
save_dir
=
'data/1.dailycode初阶/4.it_knowledge'
shutil
.
rmtree
(
save_dir
)
files
=
get_files_path
(
data_dir
,
'.md'
)
language
=
'json'
for
file
in
files
:
with
open
(
file
,
'r'
,
encoding
=
'utf-8'
)
as
f
:
data
=
f
.
read
()
file_name
=
file
.
split
(
'/'
)[
-
1
].
split
(
'.'
)[
0
]
# print(file_name)
# print(data)
question_title
=
re
.
findall
(
r
'## 标题\n(.*?)\n##'
,
data
,
re
.
S
)[
0
]
question_title
=
question_title
.
strip
()
# print(question_title)
question_content
=
re
.
findall
(
r
'## 描述\n(.*?)\n##'
,
data
,
re
.
S
)[
0
]
question_content
=
question_content
.
strip
()
# if question_content == []:
# print(file)
keywords
=
re
.
findall
(
r
'## 关键词\n(.*?)\n##'
,
data
,
re
.
S
)[
0
]
keywords
=
keywords
.
strip
()
keywords_list
=
keywords
.
split
(
';'
)
keywords
=
','
.
join
(
keywords_list
)
# print(keywords)
topic_link
=
re
.
findall
(
r
'## 链接\n(.*?)\n##'
,
data
,
re
.
S
)[
0
]
topic_link
=
topic_link
.
strip
()
# print(topic_link)
difficulty
=
'简单'
choice
=
re
.
findall
(
r
'## 选项\n(.*?)\n##'
,
data
,
re
.
S
)[
0
]
choice_list
=
choice
.
split
(
'
\n
'
)
choice_list_res
=
[]
for
tem
in
choice_list
:
if
tem
==
''
:
continue
else
:
tem
=
tem
.
strip
()
choice_list_res
.
append
(
tem
)
# print(choice_list_res)
answer
=
re
.
findall
(
r
'## 答案\n(.*)'
,
data
,
re
.
S
)[
0
]
answer
=
answer
.
strip
()
print
(
file
)
assert
answer
in
choice_list_res
question_id
=
file_name
choice_list_remove
=
[]
for
idx
,
val
in
enumerate
(
choice_list_res
):
if
val
==
answer
:
answer_idx
=
idx
continue
else
:
choice_list_remove
.
append
(
val
)
config_data
=
{}
config_data
[
'node_id'
]
=
'dailycode-'
+
uuid
.
uuid4
().
hex
config_data
[
'keywords'
]
=
[]
config_data
[
'children'
]
=
[]
config_data
[
'export'
]
=
[
"solution.json"
]
solution_json_data
=
{}
solution_json_data
[
'type'
]
=
'code_options'
solution_json_data
[
'author'
]
=
'Byeweiyang'
solution_json_data
[
'source'
]
=
'solution.md'
solution_json_data
[
'exercise_id'
]
=
uuid
.
uuid4
().
hex
solution_json_data
[
'keywords'
]
=
keywords
solution_json_data
[
'topic_link'
]
=
topic_link
solution_md_data
=
f
"#
{
question_title
}
\n\n
{
question_content
}
\n\n
## 答案
\n\n
```
{
language
}
\n
{
answer
}
\n
```
\n\n
## 选项
\n\n
### A
\n\n
```
{
language
}
\n
{
choice_list_remove
[
0
]
}
\n
```
\n\n
### B
\n\n
```
{
language
}
\n
{
choice_list_remove
[
1
]
}
\n
```
\n\n
### C
\n\n
```
{
language
}
\n
{
choice_list_remove
[
2
]
}
\n
```"
print
(
solution_md_data
)
print
(
config_data
)
print
(
solution_json_data
)
dir_list_
=
os
.
listdir
(
save_dir
)
dir_list
=
[]
for
i
in
dir_list_
:
current_dst_dir_
=
os
.
path
.
join
(
save_dir
,
i
)
if
os
.
path
.
isdir
(
current_dst_dir_
):
dir_list
.
append
(
current_dst_dir_
)
number
=
len
(
dir_list
)
+
1
dst_dir
=
os
.
path
.
join
(
save_dir
,
str
(
number
)
+
'.exercises'
)
print
(
dst_dir
)
solution_json_path
=
os
.
path
.
join
(
dst_dir
,
'solution.json'
)
solution_md_path
=
os
.
path
.
join
(
dst_dir
,
'solution.md'
)
config_path
=
os
.
path
.
join
(
dst_dir
,
'config.json'
)
if
not
os
.
path
.
exists
(
dst_dir
):
os
.
mkdir
(
dst_dir
)
dump_json
(
solution_json_path
,
solution_json_data
)
dump_json
(
config_path
,
config_data
)
with
open
(
solution_md_path
,
'w'
,
encoding
=
'utf-8'
)
as
f
:
f
.
write
(
solution_md_data
)
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录