吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1488|回复: 19
收起左侧

[求助] 这一句Python代码哪里错了?

[复制链接]
13832811375 发表于 2020-10-4 14:42
本帖最后由 13832811375 于 2020-10-4 14:52 编辑

初学Python,正在码墙,遇上个问题,代码如下:
import xlwings as xw
import pandas as pd
import os;import re
app=xw.App(visible=False,add_book=False)
file_path=r'D:\MyData\MyDesk\Test0930'
file_lists=os.listdir(file_path)
for f in file_lists:
    if str(re.findall('\.(x.*$)', f)) not in ['xls','xlsx']:    #   我这一句的意思是过滤掉所有扩展名第一个字母不是“x”的文件
        print(str(re.findall('\.(x.*$)', f)))                        #   打印显示上一句是正确的
        continue                                                           #   实际运行发现,所有的文件都被过滤掉了,并没有到下一句打开Excel文件
    wb=app.books.open(file_path+'/'+f)                  #   
    ws=wb.sheets[0]

有一起想研究Python在Excel里的应用的吗?加好友

20201004145053.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lihaiyangya + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

cangyue0609 发表于 2020-10-4 15:00
continue:表示终止当前循环,开始下一次循环
 楼主| 13832811375 发表于 2020-10-4 15:06
cangyue0609 发表于 2020-10-4 15:00
continue:表示终止当前循环,开始下一次循环

怎么改呢?我是说一定要用正则的话,不用正则有个简单写法:
    if not (f.endswith('.xls') or f.endswith('.xlsx')):
         continue
    wb=app.books.open(file_path+'/'+f)
牧灵 发表于 2020-10-4 15:34
你可以用split(".")[-1],把扩展名分割出来,然后再用startswith方法来过滤
川黔 发表于 2020-10-4 16:10
应该是缩进没搞对
[Python] 纯文本查看 复制代码
for f in file_lists:
    if str(re.findall('\.(x.*$)', f)) not in ['xls','xlsx']: 
        print(str(re.findall('\.(x.*$)', f)))                               
        wb=app.books.open(file_path+'/'+f) 
        ws=wb.sheets[0]
hwp_better 发表于 2020-10-4 16:43
这个不是小助手的感觉么?难道有什么实际应用场景?
dfds 发表于 2020-10-4 17:14
findall返回的是list,改成re.findall('\.(x.*$)', f)[0] ,直接返回的就是字符,去掉str
冥月影 发表于 2020-10-4 17:42
[Python] 纯文本查看 复制代码
if str(re.findall('\.(x.*$)', f)) not in ['xls','xlsx']:    #   我这一句的意思是过滤掉所有扩展名第一个字母不是“x”的文件


这句,比如有1.xls, 2123.xlsx...,等,然后你这个是获取扩展名的,如果你要前面文件名的话
[Python] 纯文本查看 复制代码
'.*\.(x.*$)'

试试这个
 楼主| 13832811375 发表于 2020-10-4 19:20
牧灵 发表于 2020-10-4 15:34
你可以用split(".")[-1],把扩展名分割出来,然后再用startswith方法来过滤

这个方法比较好!
 楼主| 13832811375 发表于 2020-10-4 19:22
川黔 发表于 2020-10-4 16:10
应该是缩进没搞对
[mw_shl_code=python,true]
for f in file_lists:

No!焦点错误,你关注的不是问题所在哦
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 12:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表