- 2024-07-11
-
回复了主题帖:
共读颁奖:《趣味微项目,轻松学Python》
- 2024-06-25
-
回复了主题帖:
新手上路:探秘我的首次测评之旅III
13620203064 发表于 2024-6-25 10:37
学python,有前途。。。 爱python,好好用。。
-
回复了主题帖:
新手上路:探秘我的首次测评之旅III
wangerxian 发表于 2024-6-24 17:27
哈哈,把Python都用在了这个地方,不错!!
-
回复了主题帖:
新手上路:探秘我的首次测评之旅III
秦天qintian0303 发表于 2024-6-25 08:50
能用到实际就是好的,学的目的就是用
- 2024-06-24
-
发表了主题帖:
新手上路:探秘我的首次测评之旅III
本帖最后由 Ming-- 于 2024-6-24 15:49 编辑
大家好,我又回来了。我学了一段时间参加的《趣味微项目,轻松学Python》,今天勉强能写个python小工具(非常简陋),大神可能5分钟就写完了,我花了整整一天时间。
ps:工作中定期要去特定的网站下载ETC发票,网站根据车牌号下载发票,但公司归档需要按收票公司分类,发票数量比较多,如果每个文件都点开看就太费时间了。所以就用仅有的一点点知识,写了一个pdf发票重命名程序。下面分享一下代码,请大神多多指教:
```python
import pdfplumber
import os
def get_first_five_lines(file_path):
with pdfplumber.open(file_path) as pdf:
for page in pdf.pages:
text = page.extract_text().replace(' ', '\n').split('\n') # 提取到的列表,根据下标自定义取值即可
invoice = text[1].replace('发票号码:', '') # 发票号码
name = text[5].replace('名称:', '') # 名称
money = text[43].replace('(小写)', '') # 金额
f_name = f'{name}-{invoice}-{money}'
return f_name
def batch_rename(directory):
for filename in os.listdir(directory):
if filename.endswith(".pdf"):
filepath = os.path.join(directory, filename)
new_name = get_first_five_lines(filepath) + ".pdf"
new_filepath = os.path.join(directory, new_name)
counter = 1
while os.path.exists(new_filepath):
new_name = f"{get_first_five_lines(filepath)}_{counter}.pdf"
new_filepath = os.path.join(directory, new_name)
counter += 1
os.rename(filepath, new_filepath)
print(f"Renamed '{filename}' to '{new_name}'")
# 指定需要批量重命名的目录
directory_path = input(r'请输入文件夹路径')
batch_rename(directory_path)
```
:Onion-109: 编辑页面有缩进,显示没有缩进,不知道为啥!
各位大神,正确做法是不是用这种下标的方式处理发票的,如果不是帮忙指引一下,谢谢
- 2024-05-30
-
回复了主题帖:
新手上路:探秘我的首次测评之旅II
lugl4313820 发表于 2024-5-30 18:00
楼主大佬,你最好给自己定个小项目,这样学习起来有目的,不是单纯属的看书。
嗯嗯,感觉学的东西还不够支撑,我加油哈
-
回复了主题帖:
新手上路:探秘我的首次测评之旅II
wangerxian 发表于 2024-5-30 15:27
Python好像代码不分平台,通用的。
嗯,python是不分的,书里面有些是linux的代码
- 2024-05-29
-
发表了主题帖:
新手上路:探秘我的首次测评之旅II
学完前面的数据类型啦,终于要进入主题了,翻开就发现第五章看的有点懵,因为基础不好,看不太懂。先按自己的方法来的,开篇讲到了os模块那就先去看一下官方文档:[https://docs.python.org/zh-cn/3/library/os.html](https://docs.python.org/zh-cn/3/library/os.html),我的简单理解就是可以操作文件、目录、路径、进程等。除了看官方文档,也可以用help()方法查看帮助。
**os模块方法汇总:**
```
['DirEntry', 'EX_OK', 'F_OK', 'GenericAlias', 'Mapping', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_AddedDllDirectory', '_Environ', 'all', 'builtins', 'doc', 'file', 'loader', 'name', 'package', 'spec', '_check_methods', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_wrap_close', 'abc', 'abort', 'access', 'add_dll_directory', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_blocking', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'listdrives', 'listmounts', 'listvolumes', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_blocking', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'unsetenv', 'urandom', 'utime', 'waitpid', 'waitstatus_to_exitcode', 'walk', 'write']
```
常用的应该就是:.open() 、.read() 、.write() 一下子记不下那么多,先粗略的看个大概能干什么,后期要用再来查吧。
1 2 3 开始咯,开始咯,书中将一个案例怎么数数,作者用的应该是MAC系统,跟我系统不一样,$开头的步骤要自己琢磨一下怎么用Windows来执行,不过问题不大,精华就是:str.split()方法分割单词,他这里用的是空格做分隔符,分割出来一个列表后,用len() 来数。
```
str = 'name september python' # 随便写的单词
str_list = str.split() # split方法分割
print(len(str_list)) 数有多少个单词
```
后面讲了一个格式化简而与之就是直接用: 就好了。后面几章粗略看了一下,都是有关str、list、map方法的案例,还是老办法,直接help(),下面建议先看一下方法帮助,有个初步的了解,再进行案例实践:
**str模块方法汇总:**
```
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
```
**list模块方法汇总:**
```
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
```
**map模块方法汇总:**
```
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
```
先看到这里吧,越看越后面跳看的内容越多,小白学习大忌,容我下去缓缓,消化消化。总结一下:难进行的一个原因:偷懒没下载课件,里面的案例素材没有。所以跟着书本学习,还是得下载里面的课件,千万别学我偷懒不下载课件,没有课件素材感觉没法跟案例走。
- 2024-05-17
-
回复了主题帖:
新手上路:探秘我的首次测评之旅
lugl4313820 发表于 2024-5-16 07:40
,总体感受:建议还是去看教学视频,视频更加通俗易懂,然后再看书补充一下教学视频中没有的
另本人也是新 ...
嗯嗯。好的
- 2024-05-15
-
发表了主题帖:
新手上路:探秘我的首次测评之旅
每个人都拥有着独特的潜能和能力,而测评则是一种有力的工具,帮助我们认清自我,挖掘潜能。曾经,我只是听闻过测评,却从未亲身体验其神奇之处。直到有一天,在EEworld看到了一次关于Python书籍的测评活动,便想着是否也可以报名参加,以检验自己的学习能力(本人刚学一段时间,以小白视角测评)。怀着试一试的心态,我提交了报名申请,没想到不久之后,工作人员就与我取得了联系,告知我入选了。只过了两三天,我就收到了工作人员寄来的书籍。
PS:书印刷质量很好,超预期了。
**↓↓进入正题↓↓**
#### 一、入门:引言与安装指南
我是个刚学python的小白,以小白视角来说这部分写的不太详细,当然如果是针对有一定基础的读者,这部分可以简化一点。但对于我这种基础入门的读者来说,写的过于简略。如果您也是跟作者差不多是0基础的初学者,我斗胆在这里补一下坑,有不足之处还望大家多多谅解。
##### - 安装Python
https://www.python.org/downloads/ # 官网下载python3最新版本,安装的时候记得勾选一下配置环境变量。
打开命令提示符(Win+R)输入:python -V 查看是否安装成功,如果安装成功会输出python的版本。(注意V大写)
安装Python模块,在命令提示符中输入: python -m pip install black flake8 ipython mypy pylint pytest yapf
- 获取代码
书上直接使用了git clone,但怎么安装git没写,这里补充一下。
https://git-scm.com/download/win #官网直接下载,安装我是一路next,如有其他需求,可以去网上看一下教程
然后在命令提示符(Win+R)中输入: git clone https://github.com/kyclark/tiny_python_projects d:/py_demo 克隆项目(这里后面指定了一个存储路径,可以根据需求修改)
关于IDE工具,我觉得对于初学者直接使用pycharm 社区版就好了,等以后进阶了再使用专业版
本书1-4章 讲的都是数据类型和方法,我觉得讲的有点不够深入简出,看起来有点懵,当然有些可能是翻译的原因,有基础的同学可以粗略看一下内容,然后直接看每章里面的小结。
个人觉得还是看帮助文档清晰一点 https://docs.python.org/zh-cn/3/ 下面也整理了一下脑图和我原来的笔记,希望对学习本章内容的同学有参考意义:
字符串的常用方法:
```python
# ------通过下标取值------
# 语法:字符串[下标]
# ------index 方法------
# 语法:字符串.index("test")
# ------replace 字符串替换方法(本身不变)------
# 语法:字符串.replace(字符串1, 字符串2) 将字符串1替换成字符串2
# ------split 字符串分割方法(本身不变,输出一个新列表对象)------
# 语法:字符串.split(分隔符字符串)
# ------strip 方法------
# 语法1(去除前后空格):字符串.strip()
# 语法2(去除前后指定字符串)字符串.strip(字符串) --按单个字符去除
# ------统计某个字符串的出现次数------
# 语法:
# ------统计字符串的长度------
# 语法:len()
# ------序列切片------
# 语法:序列[起始下标:结束下标:步长]
# 起始下标:可以留白,留白从头开始 结束下标(不含)表示从何处结束,可以留空,视作截取到结尾
# 步长 为负数表示,反向取(起始下标和结束下标也要反向标记)
```
列表的常用方法:
```python
# ------查找某元素的下标------
# 语法:列表.index(元素)
demo.index("test")
# ------修改特定下标索引的值------
# 语法:列表[下标]=值
demo[1] = "update"
# ------在特定下标位置插入新元素------
# 语法:列表.insert(下标,元素)
demo.insert(0,"ins")
# ------在列表的尾部追加单个新元素------
# 语法:列表.append("元素")
# ------在列表的尾部追加多个新元素------
# 语法:列表.extend(["元素","元素"])
# ------删除指定下标的元素------
# 语法1:del 列表[下标]
# 语法2:列表.pop(下标) “可以用变量接受删除的元素”
# ------删除某个元素在列表钟的第一个匹配项------
# 语法:列表.remove(元素)
# ------清空整个列表------
# 语法:列表.clear
# ------统计某个元素在列表中的数量------
# 语法:列表.count(元素)
# ------统计列表内,有多少个元素------
# 语法:len(列表)
```
集合的常用方法:
```python
# ------空集合------
# 语法: set()
# ------添加元素------
# 语法:集合.add(元素)
# ------移除元素------
# 语法:集合.remove(元素)
# ------随机取出一个元素------
# 语法:集合.pop(元素)
# -----清空集合------
# 语法:集合.clear()
# -----取2个集合的差集------
# 语法:集合1.defference(集合2)
# -----消除2个集合的差集------
# 语法:集合1.defference_update(集合2)
# -----合并2个集合------
# 语法:集合1.union(集合2)
```
字典的常用方法:
```python
# -----定义空字典------
# 语法1:={}
# 语法2:dict()
# -----新增/更新字典元素------
# 语法:字典[key]=[value]
# -----删除字典元素------
# 语法:字典.pop(key)
# -----获取全部key------
# 语法:字典.keys()
```
看完4章,总体感受:建议还是去看教学视频,视频更加通俗易懂,然后再看书补充一下教学视频中没有的
另本人也是新手小白,有错漏之处敬请海涵!
- 2024-05-10
-
回复了主题帖:
共读入围:《趣味微项目,轻松学Python》
个人信息无误,确认可以完成评测计划
-
回复了主题帖:
共读入围:《趣味微项目,轻松学Python》
收到,可以完成任务,请发货