我正在尝试解析文件夹中的文件名,并弄清楚如何将它们加载到csv文件中,但是我需要对列应用公式才能获得最终结果。代码和数据以及我计划使用的Excel公式如下。
此代码段从“ testfolder”文件夹中获取文件名,并将其转储到csv文件中。
代码:
import os, csv
f = open("/home/niteninja/Documents/sampledata.csv", 'r+')
w=csv.writer(f)
for path, dirs, files in os.walk("/home/niteninja/testfolder"):
for filename in files:
w.writerow([filename])
f.truncate()
这是一个示例,显示了运行以上代码后csv文件中的数据的样子。
sampledata.csv:
A B
ndjsmdhfr_145874
jdmsjfht_273647
hfgryuyw_756475
jgmfhdhr_736453
jdmsdhfyt_548745
我要做的是在B列中实现此公式:"LEFT(A1,FIND("_",A1) - 1)"
。
这样做的目的是消除下划线和其后的所有字符。我希望能够将此公式应用于A列中的单元格,并将新值输出到B列。我无法找出解决此问题的正确语法。
答案 0 :(得分:0)
首先为单个字符串定义一个函数:
def splitter(x):
return x.split('_')[0]
print(splitter('ndjsmdhfr_145874'))
# ndjsmdhfr
然后将其写入CSV文件。请记住使用newline=''
作为open
的参数。另外,建议您使用with open(...)
构造来读取/写入文件。这是一些伪代码:
with open('out_file.csv', 'w', newline='') as fout:
w = csv.writer(fout)
for path, dirs, files in os.walk("/home/niteninja/testfolder"):
for filename in files:
w.writerow([filename, splitter(filename)])
答案 1 :(得分:0)
这三行代码将选择B列中的第一个单元格并应用公式,然后将其复制到
列中Range("B1").Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],FIND(""_"",RC[-1]) - 1)"
Selection.AutoFill Range(ActiveCell, ActiveCell.Offset(0, -1).End(xlDown).Offset(0, 1))