macbook使用automator实现文文本自动化处理

在阅读PDF时,尤其是年代久远的PDF,容易出现类似如下情况,数字和英文成了全角字符,莫名空格和换行,非常抓狂。

2001年9月17日,世 贸 组 织 中 国 工 作 组 第18次 会 议 通 过 了 中 国 入 世 议
定 书 及 附 件 和 中 国 工 作 组 报 告 书,标 志 着 我 国 加 入 世 贸 组 织 的 谈 判 全 部 结 束;
2001年11月10日,在 卡 塔 尔 首 都 多 哈 举 行 的 世 界 贸 易 组 织(WTO)第 四 届
部 长 级 会 议 审 议 并 通 过 了 中 国 加 入 世 界 贸 易 组 织 的 决 定。同 年12月11日,中 国
正 式 加 入 WTO, 成 为其第143个成员.

尝试使用一个 python 脚本+ mac 的自动操作,实现使用一个快捷键把上面的文本处理成正常形式。

只是实现了一个最简单,最根本的需求,主要目的是使用 automator 实现自动化,以后慢慢改。

代码仓库:ChengziCao/TextCleaner (github.com)

import jieba
import pyperclip


class TextCleaner:

    def __init__(self, str):
        self.text = str

    def text_strip(self):
        """
        移除异常空格、换行
        """
        if TextCleaner.is_contain_chinese(text):
            # 如果是中文,则去除行内空格、行尾换行
            self.text = self.text.replace(' ', '').replace('\n', '')
        else:
            # 如果是英文,则只去除行尾换行。
            self.text = self.text.replace('\n', '')

        return self

    def punctuation_convert(self):
        """
        将英文标点符号替换成中文标点
        """
        e_pun = u',.!?()<>"\':;'
        c_pun = u',。!?()《》“‘:;'
        table = {ord(f): ord(t) for f, t in zip(e_pun, c_pun)}
        self.text = self.text.translate(table)
        return self

    def remove_chaos(self):
        """
        去除乱码
        """
        gbk_text_list = []

        for c in self.text:
            if not TextCleaner.if_contain_chaos(c):
                gbk_text_list.append(c)

        self.text = "".join(gbk_text_list)
        return self

    def full_to_half(self):
        """
        全角转半角
        """
        fullString = str(self.text)
        halfString = ""
        for schar in fullString:
            char_code = ord(schar)
            if char_code == 12288:
                char_code = 32
            elif (char_code >= 65281 and char_code <= 65374):
                char_code -= 65248

            halfString += chr(char_code)
        self.text = halfString
        return self

    def add_en_cn_space(self):
        """
        对英文单词、数字添加空格
        """
        list1 = list(map(lambda n: ' ' + n + ' ' if (n.encode().isalnum()) else n, jieba.cut(self.text)))
        self.text = "".join(list1).strip()
        return self

    @staticmethod
    def if_contain_chaos(text_):
        """
        判断字符是否为GBK字符,如果不是则认为是乱码。因为人眼能识别的乱码在计算机看来并没有想象中那么简单,
        “涓囧厓锛屾厛锽勬崘鐚”本身也是正常的字符,故将生僻字认为是乱码,这是一个折中的办法。
        """
        try:
            text_.encode("gb2312")
        except UnicodeEncodeError:
            return True
        return False

    @staticmethod
    def is_contain_chinese(check_str):
        """
        判断字符串中是否包含中文
        """
        for ch in check_str:
            if u'\u4e00' <= ch <= u'\u9fff':
                return True
        return False


if __name__ == '__main__':
    # text: str = """2001年9月17日,世 贸 组 织 中 国 工 作 组 第18次 会 议 通 过 了 中 国 入 世 议
    # 定 书 及 附 件 和 中 国 工 作 组 报 告 书,标 志 着 我 国 加 入 世 贸 组 织 的 谈 判 全 部 结 束;
    # 2001年11月10日,在 卡 塔 尔 首 都 多 哈 举 行 的 世 界 贸 易 组 织(WTO)第 四 届
    # 部 长 级 会 议 审 议 并 通 过 了 中 国 加 入 世 界 贸 易 组 织 的 决 定。同 年12月11日,中 国
    # 正 式 加 入 WTO, 成 为其第143个成员."""

    text: str = pyperclip.paste()
    cleaner = TextCleaner(text)
    cleaner.remove_chaos().text_strip().full_to_half().punctuation_convert().add_en_cn_space()
    pyperclip.copy(cleaner.text)
    # print(cleaner.text)

然后打开 mac 的 automator 应用,打开之后选择“新建文稿”,起个名字(不要乱起,后面还会用到),然后选“快速操作”

然后找到“运行shell脚本”双击,工作流程选择“没有输入”,之后就可以像在终端里一样执行python脚本了。

在这里插入图片描述

因为我把环境变量写到 ~/.zshrc 里了,只有启动终端时才会加载,所以我写的是python的全路径,正常应该不需要写完整路径。

之后打开系统偏好设置–>键盘–>快捷键,在服务一项中找到通用,刚才新建的快速操作就在这一栏里,指定上自己希望的快捷键。

然后,只需要复制文本,按下快捷键,文本就被处理完成,大功告成啦!

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值