我是python的新手,所以请耐心等待。 我想创建一个脚本,在特定文件夹中的所有excel文件中进行搜索,以查看它们是否包含“@”符号。如果找到匹配项,则应使用excel文件的名称写入log.txt文件。我事先没有excel文件的名称。
到目前为止,我只是在一个文件中读取,如果找到字符串则返回true。我得到的是
import pandas as pd
df = pd.read_excel(open('test.xlsx','rb'), sheetname=0)
print(df)
if '@' in df:
print("true")
else:
print("false")
这会正确返回excel文件中sheet1的内容,但查找匹配的搜索似乎不起作用。有任何想法吗?也许我做错了。
答案 0 :(得分:1)
您应该仔细阅读Pandas - Working with Text Data关于匹配或包含模式的字符串的部分。
遗憾的是,您无法使用核心Python常用的字符串方法搜索DataFrame。相反,你会使用StringMethod,如下所示:
out = False
for col in df.columns:
if df[col].str.contains('@').any():
out = 'True'
break
print(out)
另外,我不相信在使用pd.read_excel
时有必要使用open
。 E.g
df = pd.read_excel(open('test.xlsx','rb'), sheetname=0)
可以改写:
df = pd.read_excel('test.xlsx', sheetname=0)
就迭代文件夹中的文件而言,请查看内置模块glob。
答案 1 :(得分:1)
这是一个不使用熊猫的答案
import logging
LOG_FILENAME = r'file_output_location_path\log.txt'
logging.basicConfig(filename=LOG_FILENAME,
level=logging.WARNING,
format='%(asctime)s %(message)s'
)
source_folder = r'excel_file_folder_path'
def containsString():
for somefile in os.listdir(source_folder):
if'@' in somefile:
logging.warning(somefile)