如何将Excel公式应用于整列中的值?

2024-04-26 21:53:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解析文件夹中的文件名,并找出如何将它们加载到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文件中数据的一个示例。你知道吗

示例数据.csv:

       A                  B

ndjsmdhfr_145874 

jdmsjfht_273647

hfgryuyw_756475

jgmfhdhr_736453

jdmsdhfyt_548745

我要做的是实现这个公式:"LEFT(A1,FIND("_",A1) - 1)"在B列中

这样做的目的是消除下划线和其后的任何字符。我希望能够将此公式应用于A列中的单元格,并将新值输出到B列。我无法找出解决此问题的正确语法。你知道吗


Tags: 文件csv数据代码in文件夹homefor
2条回答

这三行代码将选择B列中的第一个单元格并应用公式,然后将其复制到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))

首先为单个字符串定义函数:

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)])

相关问题 更多 >