求助,如何有效的复习并学习代码

如题

贺代码!

画思维导图。

比如,我最近发现天若 OCR 的截图识别的文本内容中符号全是英文符号。识别出的单词,英文符号,中文,混在一起,很乱。

我要记笔记的话,需要手动去加空格。于是,我就写了个脚本。输入文本再输出格式化后的文本并直接放到系统剪切板中,我就可以直接粘贴到笔记中了。

这个代码就是对 数字 或 英文单词 或符号做处理。

要考虑:

  1. 单词的开始与结束
  2. 符号的前加不加空格,符号后加不加空格。
  3. 第二次遇到该符号要怎么加空格。( “测试” )

于是,我就能根据以上过程写出代码了。

Summary
import string
# for clipboard
import pyperclip  # pip install pyperclip, 跨平台的库

f = open('input_str.txt', encoding='utf-8')

origin_str = f.read()


def copy(text):
    pyperclip.copy(text)

def paste():
    return pyperclip.paste()

print('原始文本:\n', origin_str)

output = ''
punc = string.punctuation
#print('punc = ', punc)

i = 0
count = 0
len_of_origin_str = len(origin_str)

while i < len_of_origin_str:
    # 数字 or 英文单词
    if (ord(origin_str[i]) in range(65,91) or ord(origin_str[i]) in range(97,123)) or origin_str[i].isdigit():
        # 前加空格
        # 如果前面已有空格或其他特定符号, 则不加空格
        if not (output != '' and output[-1] in ' '):
            output += ' '
        output += origin_str[i]

        # 找到数字或单词的结尾(j-1), 例如 123?
        j = i + 1
        while j < len_of_origin_str:
            if (ord(origin_str[j]) in range(65, 91) or ord(origin_str[j]) in range(97, 123)) or origin_str[j].isdigit():
                output += origin_str[j]
                j += 1
            else:
                break
        # 结尾后加空格
        # 如果原字符结尾后有空格或其他特殊符号,则不加空格
        if(origin_str[j] not in ' '):
            output += ' '

        # 遍历非数字,非英文单词后那个位置
        i = j
        continue

    # 符号
    elif origin_str[i] in punc :
        # 前加空格的符号
        if(origin_str[i] in '<([{-+*/'):
            output += ' ' + origin_str[i]
            i += 1
            continue
        # 后加空格的符号
        if(origin_str[i] in ',.?!<)]}-+*/'):
            output += origin_str[i] + ' '
            i += 1
            continue
        # 其他特殊符号
        # 需要根是否为第二次遇到,来加空格的符号 " '
        else:
            if(origin_str[i] in '"\''):
                count += 1
                if count % 2 == 1:
                    # 第一次遇到,前加空格
                    output += ' ' + origin_str[i]
                else:
                    # 第二次遇到,后加空格
                    output += origin_str[i] + ' '
            # 其他特殊符号,#@%^&
            else:
                # 直接追加
                output += origin_str[i]


            # 去遍历下一个非符号的字符
            i += 1
            continue
    # 中文
    else:
        output += origin_str[i]
        i += 1

print('处理后的文本:\n', output)

copy(output)

:blush:看着好厉害,还需要更努力的学习啊。

学习的话

  1. Decompose (解构) 开源项目 - 整个项目或者依赖, 二次开发开源项目是个不错的学习途径
  2. 教别人你学到的东西

复用的话

  1. 做自己的 Snippet (代码块) 或者 Scaffolding (项目脚手架)
  2. 把自己做的 snippet 和 scaffold 给别人用

从一个 coder​:point_up_2: → engineer​:point_down: 的成长, 还需要

基础计算机 / 网络知识 - 数据结构, 复杂度, 网络, 线程, 进程, Linux系统等, 千万不要小看基础知识, 等要用的时候才发现有多重要.

统计与数学能力 - 当你设计系统时, 一个很重要的任务是减少系统的 variance, 如果你不擅长数学和统计, 在优化系统时会找不到方向 (盲目调试 vs. 精确优化).

4 Likes

很同意这点,不要因为技术而去技术。尽量培养兴趣,学会知识后去做一些自己喜欢的小功能。
比如,可以搭建个人网站,将学习到的内容一点点往上叠加,多动手。

经常关注github的热点,看到好的开源项目可以拉下来自己学习它的优点,设计思维和方式。

希望能够帮到你 :grinning_face_with_smiling_eyes:

如果学习中遇到问题也可以在社区里提问哦

好哒 :smiley:

还可以去GitHub上找一些大佬们的代码,这一招在读深度学习论文的时候非常有用
数学公式看不懂,代码看得懂啊