博客辅助工具

用python实现自动生成markdown表格、自动添加化学式下标及自动处理插入图片格式等操作

Posted by wszqkzqk on December 31, 2021
本文字数:36301

在2021年的最后一天写一篇博客吧~

本文中的代码均采用GPL v3协议发布

背景

markdown是一种轻量级的文本标记语言,语法较原始的HTML简单很多,但这并不意味着用markdown写博客就非常轻松。markdown语言中,插入表格或插入图片的格式输入虽然已经大幅简化,但仍然较为麻烦。而且,我的博客的表格中可能会出现带有上下标的化学式,但markdown标记语言本身并不支持上下标,对文本进行上下标操作需要用原始的HTML语法实现,短短的几个化学式就要输入一大堆<sup></sup><sub></sub>,很不方便

因此,我开始利用python程序自动生成所需要的markdown标记语言代码

表格生成器

我需要的自动生成表格工具主要要解决表格格式、表格内部图片插入、化学式上下标、科学计数法转化及排序这几个问题

代码

#!/usr/bin/env python3

from fnmatch import fnmatch
def pic(x):
    if '://' in x:
        return '[![]({0})]({0})'.format(x)
    else:
        return '[![]({0}{1})]({0}{1})'.format('/img/', x)
def scientificnum(s):
    s = s.replace('×10', 'e', 1)
    s = s.replace('*10', 'e', 1)
    return eval(s)
print('请输入表格的标题栏内容:')
title = input().split()
tit = '|  '
neck = '|  '
for i in range(len(title)):
    tit += title[i] + '  |  '
    neck += '----  |  '
print('考虑到博客的表格中有很多化学式,请指出表格的哪些栏需要将数字下标化与电荷上标化?(没有请回车)')
down = {int(i)-1 for i in input().split()}
print('请指出哪些栏需要按照科学计数法进行格式转化(没有请回车)')
scien = {int(i)-1 for i in input().split()}
print('请逐行输入表格内容(内容结束后请直接回车,上标前后请用<>标出,插图请用"#~"+文件名或地址):')
content = []
i = input().split()
while i:
    content.append(i)
    i = input().split()
print('若需要排序请输入根据表格哪一栏排序(否则直接回车)')
request = input()
if request:
    if int(request)-1 in scien:
        try:
            content = sorted(content, key = lambda x: scientificnum(x[int(request)-1]))
        except (TypeError, NameError, SyntaxError):
            content = sorted(content, key = lambda x: x[int(request)-1])
    else:
        try:
            content = sorted(content, key = lambda x: eval(x[int(request)-1]))
        except (TypeError, NameError, SyntaxError):
            content = sorted(content, key = lambda x: x[int(request)-1])
tab = []
for info in content:
    out = '|  '
    for i in range(len(info)):
        if fnmatch(info[i], '#~*'):
            info[i] = pic(info[i][2:])
            out += info[i] + '  |  '
            continue
        if i in scien:
            if '×10' in info[i]:
                info[i] = info[i].replace('×10', '×10<sup>', 1)
                info[i] += '</sup>'
            elif '*10' in info[i]:
                info[i] = info[i].replace('*10', '×10<sup>', 1)
                info[i] += '</sup>'
            elif 'e' in info[i]:
                info[i] = info[i].replace('e', '×10<sup>', 1)
                info[i] += '</sup>'
        if i in down:
            temp = ''
            j = 0
            while j < len(info[i]):
                word = info[i][j]
                if '0' <= word <= '9':
                    temp += '<sub>' + word + '</sub>'
                    j += 1
                elif word == '<':
                    temp += '<sup>'
                    j += 1
                    while info[i][j] != '>':
                        temp += info[i][j]
                        j += 1
                    else:
                        temp += '</sup>'
                        j += 1
                else:
                    temp += word
                    j += 1
            else:
                info[i] = temp
        out += info[i] + '  |  '
    tab.append(out)
with open("tmp.md", "w", encoding="utf-8") as initlize:
    initlize.write('')
with open("tmp.md", "a", encoding="utf-8") as echo:
    echo.write(tit + '\n')
    print(tit)
    echo.write(neck + '\n')
    print(neck)
    for i in tab:
        echo.write(i + '\n')
        print(i)
print('完成!输出表格见"tmp.md"')

由上,按照提示输入内容即可

说明

为了方便起见,图片仅需在前面加#~即可识别,同时,由于我的博客中图片均存放在/img下,所以当检测到图片地址不是绝对网址时,默认其在本网站的/img下以减少输入量

这个程序除了能将科学计数法进行格式转化外,还可以对其识别并按照其大小进行排序;由于×输入不太方便,所以在输入科学计数法时,除了可以输入5.34×107这种形式外,也可以按如1.23*10-87.56e8这样的格式输入

对于化学式,该程序默认可以直接标出数字下标,但是上标需要手动用<>框出,这样设计主要是为了避免歧义,例如当输入为SO42-时,如果不示出上标,程序将无法得知其含义为SO42-、SO42-还是SO42-

排序的逻辑是:如果是科学计数法,或者python能计算的数、计算式,则按数或计算结果的大小排序(升序),否则则按字符编码顺序排序;注意科学计数法应当表达规范,如,1×105不能写成105,否则将正确无法识别

这个程序生成的markdown文件中的表格一般可以由markdown阅读器或者网页浏览器复制出来,并可以粘贴到Word文档或Excel表格中,似乎也可以为上下标省一些事……

目前这个程序是靠空格进行表格分栏识别的,所以每个栏的内部不能含有空格,否则将会出现错误

此外,注意表格前要空一行,不能与其他内容直接相接,否则有些要求严格的markdown解析器可能会出错……

输入输出示例1

输入内容

化合物	化学式	温度	K<sub>sp</sub>	来源
2
4
无水氢氧化铝	Al(OH)3	20°C	1.9×10–33	L
无水氢氧化铝	Al(OH)3	25°C	3×10–34	w1
三水合氢氧化铝	Al(OH)3	20°C	4×10–13	C
三水合氧化铝	Al(OH)3	25°C	3.7×10–13	C
磷酸铝	AlPO4	25°C	9.84×10–21	w1
溴酸钡	Ba(BrO3)2	25°C	2.43×10–4	w1
碳酸钡	BaCO3	16°C	7×10–9	C,L
碳酸钡	BaCO3	25°C	8.1×10–9	C,L
铬酸钡	BaCrO4	28°C	2.4×10–10	C,L
氟化钡	BaF2	25.8°C	1.73×10–6	C,L
二水合碘酸钡	Ba(IO3)2	25°C	6.5×10–10	C,L
二水合草酸钡	BaC2O4	18°C	1.2×10–7	C,L
硫酸钡	BaSO4	18°C	0.87×10–10	C,L
硫酸钡	BaSO4	25°C	1.08×10–10	C,L
硫酸钡	BaSO4	50°C	1.98×10–10	C,L
氢氧化铍	Be(OH)2	25°C	6.92×10–22	w1
碳酸镉	CdCO3	25°C	1.0×10–12	w1
氢氧化镉	Cd(OH)2	25°C	7.2×10–15	w1
三水合草酸镉	CdC2O4	18°C	1.53×10–8	C,L
磷酸镉	Cd3(PO4)2	25°C	2.53×10–33	w1
硫化镉	CdS	18°C	3.6×10–29	C,L
碳酸钙(方解石)	CaCO3	15°C	0.99×10–8	C,L
碳酸钙(方解石)	CaCO3	25°C	0.87×10–8	C,L
碳酸钙(方解石)	CaCO3	18-25°C	4.8×10–9	P
铬酸钙	CaCrO4	18°C	2.3×10–2	L
氟化钙	CaF2	18°C	3.4×10–11	C,L
氟化钙	CaF2	25°C	3.95×10–11	C,L
氢氧化钙	Ca(OH)2	18°C-25°C	8×10–6	P
氢氧化钙	Ca(OH)2	25°C	5.02×10–6	w1
六水合碘酸钙	Ca(IO3)2	18°C	6.44×10–7	L
一水合草酸钙	CaC2O4	18°C	1.78×10–9	C,L
一水合草酸钙	CaC2O4	25°C	2.57×10–9	C,L
磷酸钙	Ca3(PO4)2	25°C	2.07×10–33	w1
硫酸钙	CaSO4	10°C	6.1×10–5	C,L
硫酸钙	CaSO4	25°C	4.93×10–5	w1
二水合酒石酸钙	CaC4H4O6	18°C	7.7×10–7	C,L
氢氧化亚铬	Cr(OH)2	25°C	2×10–16	w2
氢氧化铬	Cr(OH)3	25°C	6.3×10–31	w2
氢氧化钴	Co(OH)2	25°C	1.6×10–15	w2
硫化钴	CoS	18°C	3×10–26	C,L
硫化钴	CoS	18°C-25°C	1*10–21	P
碳酸铜	CuCO3	25°C	1×10–10	P
氢氧化铜	Cu(OH)2	18°C-25°C	6×10–20	P
氢氧化铜	Cu(OH)2	25°C	4.8×10–20	w1
碘酸铜	Cu(IO3)2	25°C	1.4×10–7	C,L
草酸铜	CuC2O4	25°C	2.87×10–8	C,L
硫化铜	CuS	18°C	8.5×10–45	C,L
溴化亚铜	CuBr	18°C-20°C	4.15×10–8	C
氯化亚铜	CuCl	18°C-20°C	1.02×10–6	C
氢氧化亚铜	CuOH	25°C	2×10–15	w1
碘化亚铜	CuI	18°C-20°C	5.06×10–12	C
硫化亚铜	Cu2S	16°C-18°C	2×10–47	C,L
硫氰化亚铜	CuSCN	18°C	1.64×10–11	C,L
氢氧化铁	Fe(OH)3	18°C	1.1×10–36	C,L
碳酸亚铁	FeCO3	18°C-25°C	2×10–11	P
氢氧化亚铁	Fe(OH)2	18°C	1.64×10–14	C,L
氢氧化亚铁	Fe(OH)2	25°C	1×10–15	Pw2
草酸亚铁	FeC2O4	25°C	2.1×10–7	C,L
硫化亚铁	FeS	18°C	3.7×10–19	C,L
溴化铅	PbBr2	25°C	6.3×10–6 w1
碳酸铅	PbCO3	18°C	3.3×10–14	C,L
铬酸铅	PbCrO4	18°C	1.77×10–14	C,L
氯化铅	PbCl2	25.2°C	1.0×10–4	L
氯化铅	PbCl2	18°C-25°C	1.7×10–5	P
氟化铅	PbF2	18°C	3.2×10–8	C,L
氟化铅	PbF2	26.6°C	3.7×10–8	C,L
氢氧化铅	Pb(OH)2	25°C	1×10–16 w1
碘酸铅	Pb(IO3)2	18°C	1.2×10–13	C,L
碘酸铅	Pb(IO3)2	25.8°C	2.6×10–13	C,L
碘化铅	PbI2	15°C	7.47×10–9	C
碘化铅	PbI2	25°C	1.39×10–8	C
草酸铅	PbC2O4	18°C	2.74×10–11	C,L
硫酸铅	PbSO4	18°C	1.6×10–8	C,L
硫化铅	PbS	18°C	3.4×10–28	C,L
碳酸锂	Li2CO3	25°C	1.7×10–3	C,L
氟化锂	LiF	25°C	1.84×10–3	w1
磷酸锂	Li3PO4	25°	2.37×10–4	w1
磷酸铵镁	MgNH4PO4	25°C	2.5×10–13	C,L
碳酸镁	MgCO3	12°C	2.6×10–5	C,L
氟化镁	MgF2	18°C	7.1×10–9	C,L
氟化镁	MgF2	25°C	6.4×10–9	C,L
氢氧化镁	Mg(OH)2	18°C	1.2×10–11	C,L
草酸镁	MgC2O4	18°C	8.57×10–5	C,L
碳酸锰	MnCO3	18°C-25°C	9×10–11	P
氢氧化锰	Mn(OH)2	18°C	4×10–14	C,L
硫化锰(粉色)	MnS	18°C	1.4×10–15	C,L
硫化锰(绿色)	MnS	25°C	1*10–22	P
溴化汞	HgBr2	25°C	8×10–20	L
氯化汞	HgCl2	25°C	2.6×10–15	L
氢氧化汞	Hg(OH)2	25°C	3.6×10–26	w1
碘化汞	HgI2	25°C	3.2×10–29	L
硫化汞	HgS	18°C	4×10–53	C,L
溴化亚汞	Hg2Br2	25°C	1.3×10–21	C,L
氯化亚汞	Hg2Cl2	25°C	2×10–18	C,L
碘化亚汞	Hg2I2	25°C	1.2×10–28	C,L
硫酸亚汞	Hg2SO4	25°C	6×10–7	Pw1
氢氧化镍	Ni(OH)2	25°C	5.48×10–16	w1
硫化镍	NiS	18°C	1.4×10–24	C,L
硫化镍	NiS	18°C-25°C	1*10–27	P
硫化镍	NiS	18°C-25°C	1*10–21	P
酒石酸氢钾	KHC4H4O6	18°C	3.8×10–4	C,L
高氯酸钾	KClO4	25°C	1.05×10–2	w1
高碘酸钾	KIO4	25°	3.71×10–4	w1
乙酸银	AgC2H3O2	16°C	1.82×10–3	L
溴酸银	AgBrO3	20°C	3.97×10–5	C,L
溴酸银	AgBrO3	25°C	5.77×10–5	C,L
溴化银	AgBr	18°C	4.1×10–13	C,L
溴化银	AgBr	25°C	5.35×10–13	C,L
碳酸银	Ag2CO3	25°C	6.15×10–12	C,L
氯化银	AgCl	4.7°C	0.21×10–10	C,L
氯化银	AgCl	9.7°C	0.37×10–10	L
氯化银	AgCl	25°C	1.77×10–10	C,L
氯化银	AgCl	50°C	13.2×10–10	C,L
氯化银	AgCl	100°C	21.5×10–10	C,L
铬酸银	Ag2CrO4	14.8°C	1.2×10–12	C,L
铬酸银	Ag2CrO4	25°C	9×10–12	C,L
氰化银	Ag2(CN)2	20°C	2.2×10–12	C,L
重铬酸银	Ag2Cr2O7	25°C	2×10–7	L
氢氧化银	AgOH	20°C	1.52×10–8	C,L
碘酸银	AgIO3	9.4°C	0.92×10–8	C,L
碘化银	AgI	13°C	0.32×10–16	C,L
碘化银	AgI	25°C	1.5×10–16	C,L
亚硝酸银	AgNO2	25°C	5.86×10–4	L
草酸银	Ag2C2O4	25°C	1.3×10–11	L
硫酸银	Ag2SO4	18°C-25°C	1.2×10–5	P
硫化银	Ag2S	18°C	1.6×10–49	C,L
硫氰化银	AgSCN	18°C	0.49×10–12	C,L
硫氰化银	AgSCN	25°C	1.16×10–12	C,L
碳酸锶	SrCO3	25°C	1.6×10–9	C,L
铬酸锶	SrCrO4	18°C-25°C	3.6×10–5	P
氟化锶	SrF2	18°C	2.8×10–9	C,L
草酸锶	SrC2O4	18°C	5.61×10–8	C,L
硫酸锶	SrSO4	2.9°C	2.77×10–7	C,L
硫酸锶	SrSO4	17.4°C	2.81×10–7	C,L
溴化铊	TlBr	25°C	4×10–6	L
氯化铊	TlCl	25°C	2.65×10–4	L
硫酸铊	Tl2SO4	25°C	3.6×10–4	L
硫氰化铊	TlSCN	25°C	2.25×10–4	L
氢氧化锡	Sn(OH)2	18°C-25°C	1×10–26	P
氢氧化锡	Sn(OH)2	25°C	5.45×10–27	w1,w2
硫化锡	SnS	25°C	1*10–28	P
氢氧化锌	Zn(OH)2	18°C-20°C	1.8×10–14	C,L
二水合草酸锌	ZnC2O4	18°C	1.35×10–9	C,L
硫化锌	ZnS	18°C	1.2×10–23	C,L

2

输出代码

|  化合物  |  化学式  |  温度  |  K<sub>sp</sub>  |  来源  |  
|  ----  |  ----  |  ----  |  ----  |  ----  |  
|  氰化银  |  Ag<sub>2</sub>(CN)<sub>2</sub>  |  20°C  |  2.2×10<sup>–12</sup>  |  C,L  |  
|  草酸银  |  Ag<sub>2</sub>C<sub>2</sub>O<sub>4</sub>  |  25°C  |  1.3×10<sup>–11</sup>  |  L  |  
|  碳酸银  |  Ag<sub>2</sub>CO<sub>3</sub>  |  25°C  |  6.15×10<sup>–12</sup>  |  C,L  |  
|  重铬酸银  |  Ag<sub>2</sub>Cr<sub>2</sub>O<sub>7</sub>  |  25°C  |  2×10<sup>–7</sup>  |  L  |  
|  铬酸银  |  Ag<sub>2</sub>CrO<sub>4</sub>  |  14.8°C  |  1.2×10<sup>–12</sup>  |  C,L  |  
|  铬酸银  |  Ag<sub>2</sub>CrO<sub>4</sub>  |  25°C  |  9×10<sup>–12</sup>  |  C,L  |  
|  硫化银  |  Ag<sub>2</sub>S  |  18°C  |  1.6×10<sup>–49</sup>  |  C,L  |  
|  硫酸银  |  Ag<sub>2</sub>SO<sub>4</sub>  |  18°C-25°C  |  1.2×10<sup>–5</sup>  |  P  |  
|  溴化银  |  AgBr  |  18°C  |  4.1×10<sup>–13</sup>  |  C,L  |  
|  溴化银  |  AgBr  |  25°C  |  5.35×10<sup>–13</sup>  |  C,L  |  
|  溴酸银  |  AgBrO<sub>3</sub>  |  20°C  |  3.97×10<sup>–5</sup>  |  C,L  |  
|  溴酸银  |  AgBrO<sub>3</sub>  |  25°C  |  5.77×10<sup>–5</sup>  |  C,L  |  
|  乙酸银  |  AgC<sub>2</sub>H<sub>3</sub>O<sub>2</sub>  |  16°C  |  1.82×10<sup>–3</sup>  |  L  |  
|  氯化银  |  AgCl  |  4.7°C  |  0.21×10<sup>–10</sup>  |  C,L  |  
|  氯化银  |  AgCl  |  9.7°C  |  0.37×10<sup>–10</sup>  |  L  |  
|  氯化银  |  AgCl  |  25°C  |  1.77×10<sup>–10</sup>  |  C,L  |  
|  氯化银  |  AgCl  |  50°C  |  13.2×10<sup>–10</sup>  |  C,L  |  
|  氯化银  |  AgCl  |  100°C  |  21.5×10<sup>–10</sup>  |  C,L  |  
|  碘化银  |  AgI  |  13°C  |  0.32×10<sup>–16</sup>  |  C,L  |  
|  碘化银  |  AgI  |  25°C  |  1.5×10<sup>–16</sup>  |  C,L  |  
|  碘酸银  |  AgIO<sub>3</sub>  |  9.4°C  |  0.92×10<sup>–8</sup>  |  C,L  |  
|  亚硝酸银  |  AgNO<sub>2</sub>  |  25°C  |  5.86×10<sup>–4</sup>  |  L  |  
|  氢氧化银  |  AgOH  |  20°C  |  1.52×10<sup>–8</sup>  |  C,L  |  
|  硫氰化银  |  AgSCN  |  18°C  |  0.49×10<sup>–12</sup>  |  C,L  |  
|  硫氰化银  |  AgSCN  |  25°C  |  1.16×10<sup>–12</sup>  |  C,L  |  
|  无水氢氧化铝  |  Al(OH)<sub>3</sub>  |  20°C  |  1.9×10<sup>–33</sup>  |  L  |  
|  无水氢氧化铝  |  Al(OH)<sub>3</sub>  |  25°C  |  3×10<sup>–34</sup>  |  w1  |  
|  三水合氢氧化铝  |  Al(OH)<sub>3</sub>  |  20°C  |  4×10<sup>–13</sup>  |  C  |  
|  三水合氧化铝  |  Al(OH)<sub>3</sub>  |  25°C  |  3.7×10<sup>–13</sup>  |  C  |  
|  磷酸铝  |  AlPO<sub>4</sub>  |  25°C  |  9.84×10<sup>–21</sup>  |  w1  |  
|  溴酸钡  |  Ba(BrO<sub>3</sub>)<sub>2</sub>  |  25°C  |  2.43×10<sup>–4</sup>  |  w1  |  
|  二水合碘酸钡  |  Ba(IO<sub>3</sub>)<sub>2</sub>  |  25°C  |  6.5×10<sup>–10</sup>  |  C,L  |  
|  二水合草酸钡  |  BaC<sub>2</sub>O<sub>4</sub>  |  18°C  |  1.2×10<sup>–7</sup>  |  C,L  |  
|  碳酸钡  |  BaCO<sub>3</sub>  |  16°C  |  7×10<sup>–9</sup>  |  C,L  |  
|  碳酸钡  |  BaCO<sub>3</sub>  |  25°C  |  8.1×10<sup>–9</sup>  |  C,L  |  
|  铬酸钡  |  BaCrO<sub>4</sub>  |  28°C  |  2.4×10<sup>–10</sup>  |  C,L  |  
|  氟化钡  |  BaF<sub>2</sub>  |  25.8°C  |  1.73×10<sup>–6</sup>  |  C,L  |  
|  硫酸钡  |  BaSO<sub>4</sub>  |  18°C  |  0.87×10<sup>–10</sup>  |  C,L  |  
|  硫酸钡  |  BaSO<sub>4</sub>  |  25°C  |  1.08×10<sup>–10</sup>  |  C,L  |  
|  硫酸钡  |  BaSO<sub>4</sub>  |  50°C  |  1.98×10<sup>–10</sup>  |  C,L  |  
|  氢氧化铍  |  Be(OH)<sub>2</sub>  |  25°C  |  6.92×10<sup>–22</sup>  |  w1  |  
|  六水合碘酸钙  |  Ca(IO<sub>3</sub>)<sub>2</sub>  |  18°C  |  6.44×10<sup>–7</sup>  |  L  |  
|  氢氧化钙  |  Ca(OH)<sub>2</sub>  |  18°C-25°C  |  8×10<sup>–6</sup>  |  P  |  
|  氢氧化钙  |  Ca(OH)<sub>2</sub>  |  25°C  |  5.02×10<sup>–6</sup>  |  w1  |  
|  磷酸钙  |  Ca<sub>3</sub>(PO<sub>4</sub>)<sub>2</sub>  |  25°C  |  2.07×10<sup>–33</sup>  |  w1  |  
|  一水合草酸钙  |  CaC<sub>2</sub>O<sub>4</sub>  |  18°C  |  1.78×10<sup>–9</sup>  |  C,L  |  
|  一水合草酸钙  |  CaC<sub>2</sub>O<sub>4</sub>  |  25°C  |  2.57×10<sup>–9</sup>  |  C,L  |  
|  二水合酒石酸钙  |  CaC<sub>4</sub>H<sub>4</sub>O<sub>6</sub>  |  18°C  |  7.7×10<sup>–7</sup>  |  C,L  |  
|  碳酸钙(方解石)  |  CaCO<sub>3</sub>  |  15°C  |  0.99×10<sup>–8</sup>  |  C,L  |  
|  碳酸钙(方解石)  |  CaCO<sub>3</sub>  |  25°C  |  0.87×10<sup>–8</sup>  |  C,L  |  
|  碳酸钙(方解石)  |  CaCO<sub>3</sub>  |  18-25°C  |  4.8×10<sup>–9</sup>  |  P  |  
|  铬酸钙  |  CaCrO<sub>4</sub>  |  18°C  |  2.3×10<sup>–2</sup>  |  L  |  
|  氟化钙  |  CaF<sub>2</sub>  |  18°C  |  3.4×10<sup>–11</sup>  |  C,L  |  
|  氟化钙  |  CaF<sub>2</sub>  |  25°C  |  3.95×10<sup>–11</sup>  |  C,L  |  
|  硫酸钙  |  CaSO<sub>4</sub>  |  10°C  |  6.1×10<sup>–5</sup>  |  C,L  |  
|  硫酸钙  |  CaSO<sub>4</sub>  |  25°C  |  4.93×10<sup>–5</sup>  |  w1  |  
|  氢氧化镉  |  Cd(OH)<sub>2</sub>  |  25°C  |  7.2×10<sup>–15</sup>  |  w1  |  
|  磷酸镉  |  Cd<sub>3</sub>(PO<sub>4</sub>)<sub>2</sub>  |  25°C  |  2.53×10<sup>–33</sup>  |  w1  |  
|  三水合草酸镉  |  CdC<sub>2</sub>O<sub>4</sub>  |  18°C  |  1.53×10<sup>–8</sup>  |  C,L  |  
|  碳酸镉  |  CdCO<sub>3</sub>  |  25°C  |  1.0×10<sup>–12</sup>  |  w1  |  
|  硫化镉  |  CdS  |  18°C  |  3.6×10<sup>–29</sup>  |  C,L  |  
|  氢氧化钴  |  Co(OH)<sub>2</sub>  |  25°C  |  1.6×10<sup>–15</sup>  |  w2  |  
|  硫化钴  |  CoS  |  18°C  |  3×10<sup>–26</sup>  |  C,L  |  
|  硫化钴  |  CoS  |  18°C-25°C  |  1×10<sup>–21</sup>  |  P  |  
|  氢氧化亚铬  |  Cr(OH)<sub>2</sub>  |  25°C  |  2×10<sup>–16</sup>  |  w2  |  
|  氢氧化铬  |  Cr(OH)<sub>3</sub>  |  25°C  |  6.3×10<sup>–31</sup>  |  w2  |  
|  碘酸铜  |  Cu(IO<sub>3</sub>)<sub>2</sub>  |  25°C  |  1.4×10<sup>–7</sup>  |  C,L  |  
|  氢氧化铜  |  Cu(OH)<sub>2</sub>  |  18°C-25°C  |  6×10<sup>–20</sup>  |  P  |  
|  氢氧化铜  |  Cu(OH)<sub>2</sub>  |  25°C  |  4.8×10<sup>–20</sup>  |  w1  |  
|  硫化亚铜  |  Cu<sub>2</sub>S  |  16°C-18°C  |  2×10<sup>–47</sup>  |  C,L  |  
|  溴化亚铜  |  CuBr  |  18°C-20°C  |  4.15×10<sup>–8</sup>  |  C  |  
|  草酸铜  |  CuC<sub>2</sub>O<sub>4</sub>  |  25°C  |  2.87×10<sup>–8</sup>  |  C,L  |  
|  碳酸铜  |  CuCO<sub>3</sub>  |  25°C  |  1×10<sup>–10</sup>  |  P  |  
|  氯化亚铜  |  CuCl  |  18°C-20°C  |  1.02×10<sup>–6</sup>  |  C  |  
|  碘化亚铜  |  CuI  |  18°C-20°C  |  5.06×10<sup>–12</sup>  |  C  |  
|  氢氧化亚铜  |  CuOH  |  25°C  |  2×10<sup>–15</sup>  |  w1  |  
|  硫化铜  |  CuS  |  18°C  |  8.5×10<sup>–45</sup>  |  C,L  |  
|  硫氰化亚铜  |  CuSCN  |  18°C  |  1.64×10<sup>–11</sup>  |  C,L  |  
|  氢氧化亚铁  |  Fe(OH)<sub>2</sub>  |  18°C  |  1.64×10<sup>–14</sup>  |  C,L  |  
|  氢氧化亚铁  |  Fe(OH)<sub>2</sub>  |  25°C  |  1×10<sup>–15</sup>  |  Pw2  |  
|  氢氧化铁  |  Fe(OH)<sub>3</sub>  |  18°C  |  1.1×10<sup>–36</sup>  |  C,L  |  
|  草酸亚铁  |  FeC<sub>2</sub>O<sub>4</sub>  |  25°C  |  2.1×10<sup>–7</sup>  |  C,L  |  
|  碳酸亚铁  |  FeCO<sub>3</sub>  |  18°C-25°C  |  2×10<sup>–11</sup>  |  P  |  
|  硫化亚铁  |  FeS  |  18°C  |  3.7×10<sup>–19</sup>  |  C,L  |  
|  氢氧化汞  |  Hg(OH)<sub>2</sub>  |  25°C  |  3.6×10<sup>–26</sup>  |  w1  |  
|  溴化亚汞  |  Hg<sub>2</sub>Br<sub>2</sub>  |  25°C  |  1.3×10<sup>–21</sup>  |  C,L  |  
|  氯化亚汞  |  Hg<sub>2</sub>Cl<sub>2</sub>  |  25°C  |  2×10<sup>–18</sup>  |  C,L  |  
|  碘化亚汞  |  Hg<sub>2</sub>I<sub>2</sub>  |  25°C  |  1.2×10<sup>–28</sup>  |  C,L  |  
|  硫酸亚汞  |  Hg<sub>2</sub>SO<sub>4</sub>  |  25°C  |  6×10<sup>–7</sup>  |  Pw1  |  
|  溴化汞  |  HgBr<sub>2</sub>  |  25°C  |  8×10<sup>–20</sup>  |  L  |  
|  氯化汞  |  HgCl<sub>2</sub>  |  25°C  |  2.6×10<sup>–15</sup>  |  L  |  
|  碘化汞  |  HgI<sub>2</sub>  |  25°C  |  3.2×10<sup>–29</sup>  |  L  |  
|  硫化汞  |  HgS  |  18°C  |  4×10<sup>–53</sup>  |  C,L  |  
|  高氯酸钾  |  KClO<sub>4</sub>  |  25°C  |  1.05×10<sup>–2</sup>  |  w1  |  
|  酒石酸氢钾  |  KHC<sub>4</sub>H<sub>4</sub>O<sub>6</sub>  |  18°C  |  3.8×10<sup>–4</sup>  |  C,L  |  
|  高碘酸钾  |  KIO<sub>4</sub>  |  25°  |  3.71×10<sup>–4</sup>  |  w1  |  
|  碳酸锂  |  Li<sub>2</sub>CO<sub>3</sub>  |  25°C  |  1.7×10<sup>–3</sup>  |  C,L  |  
|  磷酸锂  |  Li<sub>3</sub>PO<sub>4</sub>  |  25°  |  2.37×10<sup>–4</sup>  |  w1  |  
|  氟化锂  |  LiF  |  25°C  |  1.84×10<sup>–3</sup>  |  w1  |  
|  氢氧化镁  |  Mg(OH)<sub>2</sub>  |  18°C  |  1.2×10<sup>–11</sup>  |  C,L  |  
|  草酸镁  |  MgC<sub>2</sub>O<sub>4</sub>  |  18°C  |  8.57×10<sup>–5</sup>  |  C,L  |  
|  碳酸镁  |  MgCO<sub>3</sub>  |  12°C  |  2.6×10<sup>–5</sup>  |  C,L  |  
|  氟化镁  |  MgF<sub>2</sub>  |  18°C  |  7.1×10<sup>–9</sup>  |  C,L  |  
|  氟化镁  |  MgF<sub>2</sub>  |  25°C  |  6.4×10<sup>–9</sup>  |  C,L  |  
|  磷酸铵镁  |  MgNH<sub>4</sub>PO<sub>4</sub>  |  25°C  |  2.5×10<sup>–13</sup>  |  C,L  |  
|  氢氧化锰  |  Mn(OH)<sub>2</sub>  |  18°C  |  4×10<sup>–14</sup>  |  C,L  |  
|  碳酸锰  |  MnCO<sub>3</sub>  |  18°C-25°C  |  9×10<sup>–11</sup>  |  P  |  
|  硫化锰(粉色)  |  MnS  |  18°C  |  1.4×10<sup>–15</sup>  |  C,L  |  
|  硫化锰(绿色)  |  MnS  |  25°C  |  1×10<sup>–22</sup>  |  P  |  
|  氢氧化镍  |  Ni(OH)<sub>2</sub>  |  25°C  |  5.48×10<sup>–16</sup>  |  w1  |  
|  硫化镍  |  NiS  |  18°C  |  1.4×10<sup>–24</sup>  |  C,L  |  
|  硫化镍  |  NiS  |  18°C-25°C  |  1×10<sup>–27</sup>  |  P  |  
|  硫化镍  |  NiS  |  18°C-25°C  |  1×10<sup>–21</sup>  |  P  |  
|  碘酸铅  |  Pb(IO<sub>3</sub>)<sub>2</sub>  |  18°C  |  1.2×10<sup>–13</sup>  |  C,L  |  
|  碘酸铅  |  Pb(IO<sub>3</sub>)<sub>2</sub>  |  25.8°C  |  2.6×10<sup>–13</sup>  |  C,L  |  
|  氢氧化铅  |  Pb(OH)<sub>2</sub>  |  25°C  |  1×10<sup>–16</sup>  |  w1  |  
|  溴化铅  |  PbBr<sub>2</sub>  |  25°C  |  6.3×10<sup>–6</sup>  |  w1  |  
|  草酸铅  |  PbC<sub>2</sub>O<sub>4</sub>  |  18°C  |  2.74×10<sup>–11</sup>  |  C,L  |  
|  碳酸铅  |  PbCO<sub>3</sub>  |  18°C  |  3.3×10<sup>–14</sup>  |  C,L  |  
|  氯化铅  |  PbCl<sub>2</sub>  |  25.2°C  |  1.0×10<sup>–4</sup>  |  L  |  
|  氯化铅  |  PbCl<sub>2</sub>  |  18°C-25°C  |  1.7×10<sup>–5</sup>  |  P  |  
|  铬酸铅  |  PbCrO<sub>4</sub>  |  18°C  |  1.77×10<sup>–14</sup>  |  C,L  |  
|  氟化铅  |  PbF<sub>2</sub>  |  18°C  |  3.2×10<sup>–8</sup>  |  C,L  |  
|  氟化铅  |  PbF<sub>2</sub>  |  26.6°C  |  3.7×10<sup>–8</sup>  |  C,L  |  
|  碘化铅  |  PbI<sub>2</sub>  |  15°C  |  7.47×10<sup>–9</sup>  |  C  |  
|  碘化铅  |  PbI<sub>2</sub>  |  25°C  |  1.39×10<sup>–8</sup>  |  C  |  
|  硫化铅  |  PbS  |  18°C  |  3.4×10<sup>–28</sup>  |  C,L  |  
|  硫酸铅  |  PbSO<sub>4</sub>  |  18°C  |  1.6×10<sup>–8</sup>  |  C,L  |  
|  氢氧化锡  |  Sn(OH)<sub>2</sub>  |  18°C-25°C  |  1×10<sup>–26</sup>  |  P  |  
|  氢氧化锡  |  Sn(OH)<sub>2</sub>  |  25°C  |  5.45×10<sup>–27</sup>  |  w1,w2  |  
|  硫化锡  |  SnS  |  25°C  |  1×10<sup>–28</sup>  |  P  |  
|  草酸锶  |  SrC<sub>2</sub>O<sub>4</sub>  |  18°C  |  5.61×10<sup>–8</sup>  |  C,L  |  
|  碳酸锶  |  SrCO<sub>3</sub>  |  25°C  |  1.6×10<sup>–9</sup>  |  C,L  |  
|  铬酸锶  |  SrCrO<sub>4</sub>  |  18°C-25°C  |  3.6×10<sup>–5</sup>  |  P  |  
|  氟化锶  |  SrF<sub>2</sub>  |  18°C  |  2.8×10<sup>–9</sup>  |  C,L  |  
|  硫酸锶  |  SrSO<sub>4</sub>  |  2.9°C  |  2.77×10<sup>–7</sup>  |  C,L  |  
|  硫酸锶  |  SrSO<sub>4</sub>  |  17.4°C  |  2.81×10<sup>–7</sup>  |  C,L  |  
|  硫酸铊  |  Tl<sub>2</sub>SO<sub>4</sub>  |  25°C  |  3.6×10<sup>–4</sup>  |  L  |  
|  溴化铊  |  TlBr  |  25°C  |  4×10<sup>–6</sup>  |  L  |  
|  氯化铊  |  TlCl  |  25°C  |  2.65×10<sup>–4</sup>  |  L  |  
|  硫氰化铊  |  TlSCN  |  25°C  |  2.25×10<sup>–4</sup>  |  L  |  
|  氢氧化锌  |  Zn(OH)<sub>2</sub>  |  18°C-20°C  |  1.8×10<sup>–14</sup>  |  C,L  |  
|  二水合草酸锌  |  ZnC<sub>2</sub>O<sub>4</sub>  |  18°C  |  1.35×10<sup>–9</sup>  |  C,L  |  
|  硫化锌  |  ZnS  |  18°C  |  1.2×10<sup>–23</sup>  |  C,L  |  

呈现

化合物 化学式 温度 Ksp 来源
氰化银 Ag2(CN)2 20°C 2.2×10–12 C,L
草酸银 Ag2C2O4 25°C 1.3×10–11 L
碳酸银 Ag2CO3 25°C 6.15×10–12 C,L
重铬酸银 Ag2Cr2O7 25°C 2×10–7 L
铬酸银 Ag2CrO4 14.8°C 1.2×10–12 C,L
铬酸银 Ag2CrO4 25°C 9×10–12 C,L
硫化银 Ag2S 18°C 1.6×10–49 C,L
硫酸银 Ag2SO4 18°C-25°C 1.2×10–5 P
溴化银 AgBr 18°C 4.1×10–13 C,L
溴化银 AgBr 25°C 5.35×10–13 C,L
溴酸银 AgBrO3 20°C 3.97×10–5 C,L
溴酸银 AgBrO3 25°C 5.77×10–5 C,L
乙酸银 AgC2H3O2 16°C 1.82×10–3 L
氯化银 AgCl 4.7°C 0.21×10–10 C,L
氯化银 AgCl 9.7°C 0.37×10–10 L
氯化银 AgCl 25°C 1.77×10–10 C,L
氯化银 AgCl 50°C 13.2×10–10 C,L
氯化银 AgCl 100°C 21.5×10–10 C,L
碘化银 AgI 13°C 0.32×10–16 C,L
碘化银 AgI 25°C 1.5×10–16 C,L
碘酸银 AgIO3 9.4°C 0.92×10–8 C,L
亚硝酸银 AgNO2 25°C 5.86×10–4 L
氢氧化银 AgOH 20°C 1.52×10–8 C,L
硫氰化银 AgSCN 18°C 0.49×10–12 C,L
硫氰化银 AgSCN 25°C 1.16×10–12 C,L
无水氢氧化铝 Al(OH)3 20°C 1.9×10–33 L
无水氢氧化铝 Al(OH)3 25°C 3×10–34 w1
三水合氢氧化铝 Al(OH)3 20°C 4×10–13 C
三水合氧化铝 Al(OH)3 25°C 3.7×10–13 C
磷酸铝 AlPO4 25°C 9.84×10–21 w1
溴酸钡 Ba(BrO3)2 25°C 2.43×10–4 w1
二水合碘酸钡 Ba(IO3)2 25°C 6.5×10–10 C,L
二水合草酸钡 BaC2O4 18°C 1.2×10–7 C,L
碳酸钡 BaCO3 16°C 7×10–9 C,L
碳酸钡 BaCO3 25°C 8.1×10–9 C,L
铬酸钡 BaCrO4 28°C 2.4×10–10 C,L
氟化钡 BaF2 25.8°C 1.73×10–6 C,L
硫酸钡 BaSO4 18°C 0.87×10–10 C,L
硫酸钡 BaSO4 25°C 1.08×10–10 C,L
硫酸钡 BaSO4 50°C 1.98×10–10 C,L
氢氧化铍 Be(OH)2 25°C 6.92×10–22 w1
六水合碘酸钙 Ca(IO3)2 18°C 6.44×10–7 L
氢氧化钙 Ca(OH)2 18°C-25°C 8×10–6 P
氢氧化钙 Ca(OH)2 25°C 5.02×10–6 w1
磷酸钙 Ca3(PO4)2 25°C 2.07×10–33 w1
一水合草酸钙 CaC2O4 18°C 1.78×10–9 C,L
一水合草酸钙 CaC2O4 25°C 2.57×10–9 C,L
二水合酒石酸钙 CaC4H4O6 18°C 7.7×10–7 C,L
碳酸钙(方解石) CaCO3 15°C 0.99×10–8 C,L
碳酸钙(方解石) CaCO3 25°C 0.87×10–8 C,L
碳酸钙(方解石) CaCO3 18-25°C 4.8×10–9 P
铬酸钙 CaCrO4 18°C 2.3×10–2 L
氟化钙 CaF2 18°C 3.4×10–11 C,L
氟化钙 CaF2 25°C 3.95×10–11 C,L
硫酸钙 CaSO4 10°C 6.1×10–5 C,L
硫酸钙 CaSO4 25°C 4.93×10–5 w1
氢氧化镉 Cd(OH)2 25°C 7.2×10–15 w1
磷酸镉 Cd3(PO4)2 25°C 2.53×10–33 w1
三水合草酸镉 CdC2O4 18°C 1.53×10–8 C,L
碳酸镉 CdCO3 25°C 1.0×10–12 w1
硫化镉 CdS 18°C 3.6×10–29 C,L
氢氧化钴 Co(OH)2 25°C 1.6×10–15 w2
硫化钴 CoS 18°C 3×10–26 C,L
硫化钴 CoS 18°C-25°C 1×10–21 P
氢氧化亚铬 Cr(OH)2 25°C 2×10–16 w2
氢氧化铬 Cr(OH)3 25°C 6.3×10–31 w2
碘酸铜 Cu(IO3)2 25°C 1.4×10–7 C,L
氢氧化铜 Cu(OH)2 18°C-25°C 6×10–20 P
氢氧化铜 Cu(OH)2 25°C 4.8×10–20 w1
硫化亚铜 Cu2S 16°C-18°C 2×10–47 C,L
溴化亚铜 CuBr 18°C-20°C 4.15×10–8 C
草酸铜 CuC2O4 25°C 2.87×10–8 C,L
碳酸铜 CuCO3 25°C 1×10–10 P
氯化亚铜 CuCl 18°C-20°C 1.02×10–6 C
碘化亚铜 CuI 18°C-20°C 5.06×10–12 C
氢氧化亚铜 CuOH 25°C 2×10–15 w1
硫化铜 CuS 18°C 8.5×10–45 C,L
硫氰化亚铜 CuSCN 18°C 1.64×10–11 C,L
氢氧化亚铁 Fe(OH)2 18°C 1.64×10–14 C,L
氢氧化亚铁 Fe(OH)2 25°C 1×10–15 Pw2
氢氧化铁 Fe(OH)3 18°C 1.1×10–36 C,L
草酸亚铁 FeC2O4 25°C 2.1×10–7 C,L
碳酸亚铁 FeCO3 18°C-25°C 2×10–11 P
硫化亚铁 FeS 18°C 3.7×10–19 C,L
氢氧化汞 Hg(OH)2 25°C 3.6×10–26 w1
溴化亚汞 Hg2Br2 25°C 1.3×10–21 C,L
氯化亚汞 Hg2Cl2 25°C 2×10–18 C,L
碘化亚汞 Hg2I2 25°C 1.2×10–28 C,L
硫酸亚汞 Hg2SO4 25°C 6×10–7 Pw1
溴化汞 HgBr2 25°C 8×10–20 L
氯化汞 HgCl2 25°C 2.6×10–15 L
碘化汞 HgI2 25°C 3.2×10–29 L
硫化汞 HgS 18°C 4×10–53 C,L
高氯酸钾 KClO4 25°C 1.05×10–2 w1
酒石酸氢钾 KHC4H4O6 18°C 3.8×10–4 C,L
高碘酸钾 KIO4 25° 3.71×10–4 w1
碳酸锂 Li2CO3 25°C 1.7×10–3 C,L
磷酸锂 Li3PO4 25° 2.37×10–4 w1
氟化锂 LiF 25°C 1.84×10–3 w1
氢氧化镁 Mg(OH)2 18°C 1.2×10–11 C,L
草酸镁 MgC2O4 18°C 8.57×10–5 C,L
碳酸镁 MgCO3 12°C 2.6×10–5 C,L
氟化镁 MgF2 18°C 7.1×10–9 C,L
氟化镁 MgF2 25°C 6.4×10–9 C,L
磷酸铵镁 MgNH4PO4 25°C 2.5×10–13 C,L
氢氧化锰 Mn(OH)2 18°C 4×10–14 C,L
碳酸锰 MnCO3 18°C-25°C 9×10–11 P
硫化锰(粉色) MnS 18°C 1.4×10–15 C,L
硫化锰(绿色) MnS 25°C 1×10–22 P
氢氧化镍 Ni(OH)2 25°C 5.48×10–16 w1
硫化镍 NiS 18°C 1.4×10–24 C,L
硫化镍 NiS 18°C-25°C 1×10–27 P
硫化镍 NiS 18°C-25°C 1×10–21 P
碘酸铅 Pb(IO3)2 18°C 1.2×10–13 C,L
碘酸铅 Pb(IO3)2 25.8°C 2.6×10–13 C,L
氢氧化铅 Pb(OH)2 25°C 1×10–16 w1
溴化铅 PbBr2 25°C 6.3×10–6 w1
草酸铅 PbC2O4 18°C 2.74×10–11 C,L
碳酸铅 PbCO3 18°C 3.3×10–14 C,L
氯化铅 PbCl2 25.2°C 1.0×10–4 L
氯化铅 PbCl2 18°C-25°C 1.7×10–5 P
铬酸铅 PbCrO4 18°C 1.77×10–14 C,L
氟化铅 PbF2 18°C 3.2×10–8 C,L
氟化铅 PbF2 26.6°C 3.7×10–8 C,L
碘化铅 PbI2 15°C 7.47×10–9 C
碘化铅 PbI2 25°C 1.39×10–8 C
硫化铅 PbS 18°C 3.4×10–28 C,L
硫酸铅 PbSO4 18°C 1.6×10–8 C,L
氢氧化锡 Sn(OH)2 18°C-25°C 1×10–26 P
氢氧化锡 Sn(OH)2 25°C 5.45×10–27 w1,w2
硫化锡 SnS 25°C 1×10–28 P
草酸锶 SrC2O4 18°C 5.61×10–8 C,L
碳酸锶 SrCO3 25°C 1.6×10–9 C,L
铬酸锶 SrCrO4 18°C-25°C 3.6×10–5 P
氟化锶 SrF2 18°C 2.8×10–9 C,L
硫酸锶 SrSO4 2.9°C 2.77×10–7 C,L
硫酸锶 SrSO4 17.4°C 2.81×10–7 C,L
硫酸铊 Tl2SO4 25°C 3.6×10–4 L
溴化铊 TlBr 25°C 4×10–6 L
氯化铊 TlCl 25°C 2.65×10–4 L
硫氰化铊 TlSCN 25°C 2.25×10–4 L
氢氧化锌 Zn(OH)2 18°C-20°C 1.8×10–14 C,L
二水合草酸锌 ZnC2O4 18°C 1.35×10–9 C,L
硫化锌 ZnS 18°C 1.2×10–23 C,L

输入输出示例2

输入内容

碳正离子        氢负离子亲和能(kJ/mol)
1

c-C7H7<+>       841
(C6H5)3C<+>     900
H2N-CH2<+>      912
PhC(Me)2<+>     920
c-C3H3<+>       925
Ph2CH<+>        929
t-Bu<+> 967
PhCH2<+>        979
HO-CH2<+>       1017
i-Pr<+> 1030
s-Bu<+> 1033
c-C3H5-CH2<+>   1042
n-Bu<+> 1109
i-Bu<+> 1109
n-Pr<+> 1113
C2H5<+> 1142
C2H3<+> 1201
F-CH2<+>        1213
C6H5<+> 1247
CH3<+>  1306
烯丙基正离子    1072
环戊二烯基正离子        1080
炔丙基正离子    1130
#~https://wszqkzqk.github.io/img/%E8%B4%A8%E5%AD%90%E5%8C%96%E7%9A%84%E8%8B%AF.webp 887
#~https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%8E%AF%E4%B8%99%E5%9F%BA%E4%B8%8E%E4%B8%A4%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp 912
#~https://wszqkzqk.github.io/img/tBu-C(CH3)2+.webp 941
#~https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%83%AF%E5%9F%BA%E4%B8%8E%E4%B8%A4%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp 941
#~https://wszqkzqk.github.io/img/W%E7%83%AF%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp 941
#~https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%8E%AF%E4%B8%99%E5%9F%BA%E4%B8%8E%E4%B8%80%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp 962
#~https://wszqkzqk.github.io/img/2-%E9%99%8D%E5%86%B0%E7%89%87%E5%9F%BA%E6%AD%A3%E7%A6%BB%E5%AD%90.webp 967
#~https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%83%AF%E5%9F%BA%E4%B8%8E%E4%B8%80%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp 987
#~https://wszqkzqk.github.io/img/%E5%8F%89%E5%8F%89%E7%83%AF%E7%A2%B3%E6%AD%A3.webp 1038
#~https://wszqkzqk.github.io/img/%E7%94%B1%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%83%AF%E5%9F%BA%E7%A2%B3%E6%AD%A3%E7%A6%BB%E5%AD%90.webp 1079

2

输出代码

|  碳正离子  |  氢负离子亲和能(kJ/mol)  |
| ---- | ---- |
|  c-C<sub>7</sub>H<sub>7</sub><sup>+</sup>  |  841  |  
|  [![](https://wszqkzqk.github.io/img/%E8%B4%A8%E5%AD%90%E5%8C%96%E7%9A%84%E8%8B%AF.webp)](https://wszqkzqk.github.io/img/%E8%B4%A8%E5%AD%90%E5%8C%96%E7%9A%84%E8%8B%AF.webp)  |887  |  
|  (C<sub>6</sub>H<sub>5</sub>)<sub>3</sub>C<sup>+</sup>  |  900  |  
|  H<sub>2</sub>N-CH<sub>2</sub><sup>+</sup>  |  912  |  
|  [![](https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%8E%AF%E4%B8%99%E5%9F%BA%E4%B8%8E%E4%B8%A4%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp)](https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%8E%AF%E4%B8%99%E5%9F%BA%E4%B8%8E%E4%B8%A4%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp)  |912  |  
|  PhC(Me)<sub>2</sub><sup>+</sup>  |  920  |  
|  c-C<sub>3</sub>H<sub>3</sub><sup>+</sup>  |  925  |  
|  Ph<sub>2</sub>CH<sup>+</sup>  |  929  |  
|  [![](https://wszqkzqk.github.io/img/tBu-C(CH3)2+.webp)](https://wszqkzqk.github.io/img/tBu-C(CH3)2+.webp)  |941  |  
|  [![](https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%83%AF%E5%9F%BA%E4%B8%8E%E4%B8%A4%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp)](https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%83%AF%E5%9F%BA%E4%B8%8E%E4%B8%A4%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp)  |941  |  
|  [![](https://wszqkzqk.github.io/img/W%E7%83%AF%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp)](https://wszqkzqk.github.io/img/W%E7%83%AF%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp)  |941  |  
|  [![](https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%8E%AF%E4%B8%99%E5%9F%BA%E4%B8%8E%E4%B8%80%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp)](https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%8E%AF%E4%B8%99%E5%9F%BA%E4%B8%8E%E4%B8%80%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp)  |962  |  
|  t-Bu<sup>+</sup>  |  967  |  
|  [![](https://wszqkzqk.github.io/img/2-%E9%99%8D%E5%86%B0%E7%89%87%E5%9F%BA%E6%AD%A3%E7%A6%BB%E5%AD%90.webp)](https://wszqkzqk.github.io/img/2-%E9%99%8D%E5%86%B0%E7%89%87%E5%9F%BA%E6%AD%A3%E7%A6%BB%E5%AD%90.webp)  |967  |  
|  PhCH<sub>2</sub><sup>+</sup>  |  979  |  
|  [![](https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%83%AF%E5%9F%BA%E4%B8%8E%E4%B8%80%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp)](https://wszqkzqk.github.io/img/%E4%B8%80%E4%B8%AA%E7%83%AF%E5%9F%BA%E4%B8%8E%E4%B8%80%E4%B8%AA%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%A2%B3%E6%AD%A3.webp)  |987  |  
|  HO-CH<sub>2</sub><sup>+</sup>  |  1017  |  
|  i-Pr<sup>+</sup>  |  1030  |  
|  s-Bu<sup>+</sup>  |  1033  |  
|  [![](https://wszqkzqk.github.io/img/%E5%8F%89%E5%8F%89%E7%83%AF%E7%A2%B3%E6%AD%A3.webp)](https://wszqkzqk.github.io/img/%E5%8F%89%E5%8F%89%E7%83%AF%E7%A2%B3%E6%AD%A3.webp)  |1038  |  
|  c-C<sub>3</sub>H<sub>5</sub>-CH<sub>2</sub><sup>+</sup>  |  1042  |  
|  烯丙基正离子  |  1072  |  
|  [![](https://wszqkzqk.github.io/img/%E7%94%B1%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%83%AF%E5%9F%BA%E7%A2%B3%E6%AD%A3%E7%A6%BB%E5%AD%90.webp)](https://wszqkzqk.github.io/img/%E7%94%B1%E7%94%B2%E5%9F%BA%E7%A8%B3%E5%AE%9A%E7%9A%84%E7%83%AF%E5%9F%BA%E7%A2%B3%E6%AD%A3%E7%A6%BB%E5%AD%90.webp)  |1079  |  
|  环戊二烯基正离子  |  1080  |  
|  n-Bu<sup>+</sup>  |  1109  |  
|  i-Bu<sup>+</sup>  |  1109  |  
|  n-Pr<sup>+</sup>  |  1113  |  
|  炔丙基正离子  |  1130  |  
|  C<sub>2</sub>H<sub>5</sub><sup>+</sup>  |  1142  |  
|  C<sub>2</sub>H<sub>3</sub><sup>+</sup>  |  1201  |  
|  F-CH<sub>2</sub><sup>+</sup>  |  1213  |  
|  C<sub>6</sub>H<sub>5</sub><sup>+</sup>  |  1247  |  
|  CH<sub>3</sub><sup>+</sup>  |  1306  |  

呈现

碳正离子 氢负离子亲和能(kJ/mol)
c-C7H7+ 841
887
(C6H5)3C+ 900
H2N-CH2+ 912
912
PhC(Me)2+ 920
c-C3H3+ 925
Ph2CH+ 929
941
941
941
962
t-Bu+ 967
967
PhCH2+ 979
987
HO-CH2+ 1017
i-Pr+ 1030
s-Bu+ 1033
1038
c-C3H5-CH2+ 1042
烯丙基正离子 1072
1079
环戊二烯基正离子 1080
n-Bu+ 1109
i-Bu+ 1109
n-Pr+ 1113
炔丙基正离子 1130
C2H5+ 1142
C2H3+ 1201
F-CH2+ 1213
C6H5+ 1247
CH3+ 1306

图片插入格式生成器

这个程序的工作方式和表格生成器的pic()函数差不多但是追加了一个图片地址插入功能,可以使点击图片时不跳转至图片本身的地址,而跳转到给定的网址,为了方便起见,该程序会自动将结果复制到剪贴板,这样就只需要在程序窗口中输入图片地址,再在需要的地方直接Ctrl + v就可以插入了

由于用到了剪贴板相关的系统命令,这个程序的Windows版和Linux版显然不一样

Linux需要先安装xclip这一软件包才能使用

现在的Windows默认集成了clip命令,不需要额外操作

由于我不用Mac也没有Mac,在这里就不管了~~~

代码

Linux版

#!/usr/bin/env python3

#需要先安装xclip软件包

import os
def clip(info):
    print(info)
    os.system('echo "' + info + '" |xclip -selection  c ')
    print('已复制到剪贴板!')
while 1:
    print('请输入图片地址(默认在./img下,也可输入绝对网址或带有/img的完整地址):')
    url = input()
    imgname = url
    if '://' not in url:
        url = '/img/' + url
        flag = 0
    print('请输入点击图片的链接指向(默认为本身)')
    goto = input()
    if not goto:
        goto = url
    clip('[![#~{2}]({0})]({1})'.format(url, goto, imgname))
    print()

Windows版

#!/usr/bin/env python3

import os
def clip(info):
    print(info)
    os.system('echo "' + info + '" | clip')
    print('已复制到剪贴板!')
while 1:
    print('请输入图片地址(默认在./img下,也可输入绝对网址或带有/img的完整地址):')
    url = input()
    imgname = url
    if '://' not in url:
        url = '/img/' + url
        flag = 0
    print('请输入点击图片的链接指向(默认为本身)')
    goto = input()
    if not goto:
        goto = url
    clip('[![#~{2}]({0})]({1})'.format(url, goto, imgname))
    print()

网页链接插入器

图片插入器稍加修改就能得到网址插入器(网址插入器甚至实现更简单)

又是方便的结果复制到剪贴板~~~

代码

Linux版

#!/usr/bin/env python3

#需要先安装xclip软件包

import os
def clip(info):
    print(info)
    os.system('echo "' + info + '" |xclip -selection  c ')
    print('已复制到剪贴板!')
while 1:
    print('请输入链接网址:')
    url = input()
    print('请输入显示文字(默认为网址本身):')
    words = input()
    if not words:
        words = url
    clip('[{0}]({1})'.format(words, url))
    print()

Windows版

#!/usr/bin/env python3

import os
def clip(info):
    print(info)
    os.system('echo "' + info + '" | clip')
    print('已复制到剪贴板!')
while 1:
    print('请输入图片地址(默认在./img下,也可输入绝对网址或带有/img的完整地址):')
    url = input()
    if '://' not in url:
        url = '/img/' + url
    print('请输入点击图片的链接指向(默认为本身)')
    goto = input()
    if not goto:
        goto = url
    clip('[![]({0})]({1})'.format(url, goto))
    print()

化学式处理器

这个其实就是把表格生成器中的化学式处理部分单独抽离出来,方便进行化学式插入的一个工具

这个程序同样会将结果复制到剪贴板

代码

Linux版

#!/usr/bin/env python3

import os
def clip(info):
    print(info)
    os.system('echo "' + info + '" |xclip -selection  c ')
    print('已复制到剪贴板!')
while 1:
    print('请输入化学式(上标需要用"<>"框出):')
    fml = input()
    temp = ''
    j = 0
    while j < len(fml):
        word = fml[j]
        if '0' <= word <= '9':
            temp += '<sub>' + word + '</sub>'
            j += 1
        elif word == '<':
            temp += '<sup>'
            j += 1
            while fml[j] != '>':
                temp += fml[j]
                j += 1
            else:
                temp += '</sup>'
                j += 1
        else:
            temp += word
            j += 1
    clip(temp)
    print()

Windows版

#!/usr/bin/env python3

import os
def clip(info):
    print(info)
    os.system('echo "' + info + '" | clip')
    print('已复制到剪贴板!')
while 1:
    print('请输入化学式(上标需要用"<>"框出):')
    fml = input()
    temp = ''
    j = 0
    while j < len(fml):
        word = fml[j]
        if '0' <= word <= '9':
            temp += '<sub>' + word + '</sub>'
            j += 1
        elif word == '<':
            temp += '<sup>'
            j += 1
            while fml[j] != '>':
                temp += fml[j]
                j += 1
            else:
                temp += '</sup>'
                j += 1
        else:
            temp += word
            j += 1
    clip(temp)
    print()

引注文献插入器

除了这些常规插入以外,我某些转载Wikipedia的博客还需要在下方给出引注,这也可以用Python程序来生成引注格式简化操作

代码

#!/usr/bin/env python3

#将纯文本引注转化为markdown格式

tab = []
n = 0
print('直接复制粘贴引注即可,输入空行回车代表粘贴完毕')
info = input()
while info:
    n += 1
    tab.append('[^{}]: '.format(n) + info + '\n\n')
    info = input()
with open("tmp.md", "w", encoding="utf-8") as initlize:    #文件初始化
    initlize.write('')
with open("tmp.md", "a", encoding="utf-8") as echo:
    for i in tab:
        echo.write(i)
        print(i)
    print('完成!输出文件见"tmp.md"')

引注文献插入器 2.0

这是前面的引注文献插入器升级版本,可以直接对markdown文件进行操作,并且可以将其中的非markdown脚注”[num]”替换为markdown脚注格式”[^num]”

输入内容为所需要操作的markdown文件的地址、引注的数及引注内容,但是引注必须要分行输入,且首、尾、中间均不得有空行

代码

#!/usr/bin/env python3

from sys import argv
if len(argv) > 2:
    print('错误!仅支持一个参数!')
    exit()
elif len(argv) == 2:
    path = argv[1]
else:
    print('请输入所操作的文件的地址:')
    path = input()
    if ((path[0] == "'") or (path[0] == '"')) and ((path[-1] == "'") or (path[-1] == '"')):
        path = path[1:-1]
print('请输入总引注数(即原文最后的引注数):')
num = int(input())
print('若需要替换正文中的"[n]"为markdown引注形式"[^n]"请输入"1",否则请输入"0"(默认"1"),注意:如果文中有其他地方出现了"[n]"(如以"n"为图片名显示的图片)请不要使用这个功能:')
inner = input()
if inner != '0':
    with open(path, "r", encoding="utf-8") as load:
        content = load.read()
    for i in range(1, num + 1):
        content = content.replace('[{}]'.format(i), '[^{}]'.format(i))
    with open(path, "w", encoding="utf-8") as rewt:
        rewt.write(content)
print('请依次输入各个注释(应保证每个注释占一行,注意复制时首行不要留空):')
with open(path, "a", encoding="utf-8") as echo:
    echo.write('\n')
    for i in range(num):
        ref = '[^{}]: '.format(i + 1) + input() + '\n\n'
        echo.write(ref)
print()
print('完成!')

引注文献插入器 3.0

这是引注文献插入器再一次升级的版本,该程序按照Linux程序风格设计,支持程序 + [参数]格式运行,避免了直接粘贴引注内容时容易出错的问题,同时,支持按照不同的参数进行不同的处理,可以直接将文件地址信息附在执行命令后,可以很方便地一键式操作

这一版本还加入了对-h--help参数的支持,可以用来查看帮助信息

由于参数的灵活性,此程序依然可以不加参数的运行或只加部分参数的运行,具体参数用法如下(在本地将该程序的文件名命名为mdrefadd.py):

  1. mdrefadd.py 0 [待处理的.md文件的路径] [引注内容纯文本路径]
    • 仅将引注内容按markdown语法添加到目标文件中
  2. mdrefadd.py 1 [待处理的.md文件的路径] [引注内容纯文本路径]
    • 将引注内容按markdown语法添加到目标文件中,并将目标文件中的[num]改为makdown引注[^num]
  3. mdrefadd.py [待处理的.md文件的路径] [引注内容纯文本路径]
    • 将引注内容按markdown语法添加到目标文件中,并将目标文件中的[num]改为makdown引注[^num]
  4. mdrefadd.py [待处理的.md文件的路径]
    • 处理目标文件,可在后续过程中自选处理内容(手动输入引注内容)
  5. mdrefadd.py
    • 在后续过程中自选目标文件和处理内容(手动输入引注内容)
  6. mdrefadd.py --help
    • 查看帮助
  7. mdrefadd.py -h
    • 查看帮助

注意:Windows操作系统需要按python mdrefadd.py [参数]运行

与上一版本不同,对于给定了引注路径参数的操作,此程序可以自动排除空行并自动统计有效引注数,便利了许多

代码

#!/usr/bin/env python3

from sys import argv
def pathed(path):
    if ((path[0] == "'") or (path[0] == '"')) and ((path[-1] == "'") or (path[-1] == '"')):
        return path[1:-1]
    else:
        return path
loadtarget = 0
loadref = 0
loadinner = 0
if len(argv) == 1:
    loadtarget = 1
    loadref = 1
    loadinner = 1
elif len(argv) == 2:
    if (argv[1] == '-h') or (argv[1] == '--help'):
        print('用法:')
        print('1. mdrefadd.py 0 [待处理的.md文件的路径] [引注内容纯文本路径]')
        print('      -- 仅将引注内容按markdown语法添加到目标文件中')
        print('2. mdrefadd.py 1 [待处理的.md文件的路径] [引注内容纯文本路径]')
        print('      -- 将引注内容按markdown语法添加到目标文件中,并将目标文件中的"[num]"改为makdown引注"[^num]"')
        print('3. mdrefadd.py [待处理的.md文件的路径] [引注内容纯文本路径]')
        print('      -- 将引注内容按markdown语法添加到目标文件中,并将目标文件中的"[num]"改为makdown引注"[^num]"')
        print('4. mdrefadd.py [待处理的.md文件的路径]')
        print('      -- 处理目标文件,可在后续过程中自选处理内容(手动输入引注内容)')
        print('5. mdrefadd.py')
        print('      -- 在后续过程中自选目标文件和处理内容(手动输入引注内容)')
        print('6. mdrefadd.py --help')
        print('      -- 查看帮助')
        print('7. mdrefadd.py -h')
        print('      -- 查看帮助')
        print('注意:Windows操作系统需要执行"python mdrefadd.py [参数]"')
        exit()
    else:
        path = pathed(argv[1])
        loadref = 1
        loadinner = 1
elif len(argv) == 3:
    inner = '1'
    path = pathed(argv[1])
    refpath = pathed(argv[2])
elif len(argv) == 4:
    inner = argv[1]
    path = pathed(argv[2])
    refpath = pathed(argv[3])
else:
    print('错误!参数过多!')
    exit()
if loadtarget:
    print('请输入所操作的文件的路径:')
    path = pathed(input())
if loadref:
    print('请输入总引注数(即原文最后的引注数):')
    num = int(input())
    print('请依次输入各个引注的内容(应保证每个引注占一行,注意复制时首行不要留空):')
    with open(path, "a", encoding="utf-8") as echo:
        echo.write('\n')
        for i in range(num):
            ref = '[^{}]: '.format(i + 1) + input() + '\n\n'
            echo.write(ref)
else:
    with open(refpath, "r", encoding="utf-8") as load:
        refs = load.readlines()
    with open(path, "a", encoding="utf-8") as echo:
        echo.write('\n')
        i = 1
        for info in refs:
            if info and (not info.isspace()):
                ref = '[^{0}]: {1}\n'.format(i, info)
                i += 1
                echo.write(ref)
        num = i
if loadinner:
    print('若需要替换文中的"[num]"为markdown引注形式"[^num]"请输入"1",否则请输入"0"(默认"1"),注意:如果文中有其他地方出现了"[num]"(如以数字为图片名显示的图片)请不要使用这个功能:')
    inner = input()
if inner != '0':
    with open(path, "r", encoding="utf-8") as load:
        content = load.read()
    for i in range(1, num + 1):
        content = content.replace('[{}]'.format(i), '[^{}]'.format(i))
    with open(path, "w", encoding="utf-8") as rewt:
        rewt.write(content)
print('完成!')

图片插入工具 2.0

这也是一个Linux风格的程序,同样支持参数,用法如下:

  1. mdimginsert.py [待处理的.md文件的路径]
    • 将目标文件中所有以#~开头且以.png, .jpg, .jpeg, .svg, .gif结尾的行表达为markdown图片格式(注意图片末不能有空格)
  2. mdimginsert.py
    • 输入目标文件路径,将其中以#~开头且以.png, .jpg, .jpeg, .svg, .gif结尾的行表达为markdown图片格式(注意图片末不能有空格)
  3. mdimginsert.py --help
    • 查看帮助
  4. mdimginsert.py -h
    • 查看帮助

与第一版程序不同,这个版本是直接将指定的markdown文件内的所有图片对象(即以#~开头,并以常用图片后缀名结尾的行)转化为markdown图片表达格式。由于可以直接批量转化,因此更加高效

代码

#!/usr/bin/env python3

from sys import argv
from fnmatch import fnmatch
def pathed(path):
    if ((path[0] == "'") or (path[0] == '"')) and ((path[-1] == "'") or (path[-1] == '"')):
        return path[1:-1]
    else:
        return path
if len(argv) == 2:
    if (argv[1] == '--help') or (argv[1] == '-h'):
        print('用法:')
        print('1. mdimginsert.py [待处理的.md文件的路径]')
        print('      -- 将目标文件中所有以"#~"开头且以".png", ".jpg", ".jpeg", ".svg", ".gif", ".ico", ".icon"结尾的行表达为markdown图片格式(注意图片末不能有空格)')
        print('2. mdimginsert.py')
        print('      -- 输入目标文件路径,将其中以"#~"开头"#~"且以".png", ".jpg", ".jpeg", ".svg", ".gif", ".ico", ".icon"结尾的行表达为markdown图片格式(注意图片末不能有空格)')
        print('3. mdimginsert.py --help')
        print('      -- 查看帮助')
        print('4. mdimginsert.py -h')
        print('      -- 查看帮助')
        exit()
    else:
        path = pathed(argv[1])
elif len(argv) == 1:
    print('请输入所需要操作的.md文件地址:')
    path = pathed(input())
imgchara = ('.png', '.jpg', '.jpeg', '.svg', '.gif', '.ico', '.icon', '.PNG', '.JPG', '.JPEG', '.SVG', '.GIF', '.ICO', '.ICON')
with open(path, "r", encoding="utf-8") as load:
    content = load.readlines()
output = []
for i in range(len(content)):
    if fnmatch(content[i], '#~*'):
        for imgfmt in imgchara:
            if fnmatch(content[i], '*{}\n'.format(imgfmt)):
                flag = 1
                break
        else:
            flag = 0
    else:
        flag = 0
    if flag:
        imgname = content[i][2:-1]
        if '://' in imgname:
            content[i] = '[![#~{0}]({0})]({0})\n'.format(imgname)
        else:
            content[i] = '[![#~{0}](/img/{0})](/img/{0})\n'.format(imgname)
with open(path, "w", encoding="utf-8") as init:
    init.write('')
with open(path, "a", encoding="utf-8") as echo:
    for line in content:
        echo.write(line)
print('完成!')

结束

有了这些工具,以后写博客肯定更加方便了~~~