【发布时间】:2020-05-29 14:07:45
【问题描述】:
我正在读取 CSV 文件并打算写入 Excel 文件。 CSV 文件只有两列,但我想在写入 Excel 之前使用正则表达式提取列数据并创建新列。
CSV 文件:test.csv
name, file_info
test, c:\folder1\subfolder1\subfolder2\example.xls | history 12345 at 2020-01-01
这是我目前的代码:
import csv
with open('test.csv',mode='r') as testFile
reader = csv.DictReader(testFile, delimiter=',')
for row in reader:
### This is where i assume i need to perform the regex operation on the current row
我想将文件名 (example.xlsx)、历史记录 (12345) 和日期 (2020-01-01) 提取为 Excel 文件中的列。
我成功地测试了一个正则表达式
"\\([^\\|]*)\s*\|\"
我确信有多种方法可以做到这一点。熊猫会更好吗?我可以通过以下方式简单地读取和写入文件到 excel:
df = pd.read_csv('test.csv')
df.to_excel('text.xlsx)
我对 Pandas 没有任何经验,因此不确定如何使用正则表达式执行我想要的操作并将它们结合在一起。
最终产品是一个包含五 (5) 列的 Excel 电子表格
name | path | file | history | date
【问题讨论】:
-
使用 Pandas,看看使用 df[['newcol1', 'newcol2']] = DataFrame.loc['colname'].str.extract(REGEX) 逻辑。显然,您的字段和正则表达式模式。这会将 named regex groups 提取到 DataFrame 的新列中。有点厉害。
-
请给我们一些CSV的示例行吗?
-
我对 Pandas 没有任何经验,所以不知道如何使用正则表达式执行我想要的操作并将它们结合在一起。 Stack Overflow 不是代替您需要的指南、教程或文档。请参阅:tour、How to Ask、help center。
-
这里有更多的 CSV
-
名称,file_info test1,c:\folder1\subfolder1\subfolder2\example1.xls |历史 12345 在 2020-01-01 test2,c:\folder1\subfolder1\subfolder2\example2.xls |历史 24687 在 2020-01-12 test3,c:\folder1\subfolder1\subfolder2\example3.xls |历史 33445 在 2020-01-13 test4,c:\folder1\subfolder1\subfolder2\example4.xls |历史 55664 在 2020-01-14