我知道,这个标题听起来有点混乱,作为一个Python新手,我不知道如何更好地表达它。在
我想做的是:
我的脚本将读取csv文件(电子表格),并从中创建新的电子表格,这些表格除了数字之外不包含任何其他内容。基本上,这个脚本通过删除包含不需要的字符串的行和列来消除它们。我设法创建了一个正常运行的脚本,尽管它只能应用于单个文件。换句话说,每次我想在另一个csv文件上运行脚本时,我都需要更改脚本中的输入文件名。在
我的文件有这样的名称:“MODELXXXXXXXXX\uu NAMEY\u alfaZ.csv”,其中X、Y和Z是数字。 我想将这些文件的名称作为Python脚本的输入,所以我使用了系统argv[1] 为了达到这个目的。 下面是我的代码示例:
import csv
import sys
strings_to_remove = ['string1','string2']
with open(sys.argv[1],'rb') as oldfile, open('NAMEY_alfaZ_test1.csv','w+b') as newfile:
for line in oldfile:
if not in any(strings_to_remove in line for strings_to_remove in strings_to_remove):
newfile.write(line)
我这样运行脚本:
^{pr2}$现在我想做的是自动化我的脚本,即去掉“modelxxxxx”部分,而不必在每次我想将脚本应用到另一个文件时为输出文件写“NAMEY\u alfaZ”。在
有办法吗?在
谢谢
如果文件名不包含多个
__
,则可以使用:如果双下划线是键入错误,可以使用:
^{pr2}$这样,它将从列表中删除第一项(因此是“Modelxxxxx”),然后将列表重新连接在一起。在
{g文件名中的两个下划线从文件名的另一部分中分离出来
然后就可以使用这两个值来代替
open()
语句中的硬编码值。在编辑-如果还想修改不带扩展名的基名称,可以将其扩展为如下所示:
^{pr2}$您的输入文件名具有常规格式,因此我建议您使用Python regular expressions来提取相关信息。在
在这种情况下,可以按如下方式准备正则表达式:
然后可以使用
match
和group
匹配并提取所需的信息。在例如,要获得
^{pr2}$model
,您需要:你的例子应该是:
您可能需要调整正则表达式,例如,将
\d
更改为\d+
,或者反之亦然,以匹配文件名中的位数。在相关问题 更多 >
编程相关推荐