我试图从不同的文件夹中获取文本,并以CSV格式将每个文本写入一个带有文件名(*.txt)的单元格中。
import os
folders = os.listdir("/Users/hilo/Documents/digitization/ReleasedDataset_mp3")
folders
import glob, csv在这里,我试图获取文件夹名称的列表,它们如下:
['Becton Dickinson_20170803',
'CIGNA Corp._20170202',
'The Bank of New York Mellon Corp._20170720',
'JPMorgan Chase & Co._20170714']在这里,我尝试应用一个循环来打开和提取每个*txt文件中的所有文本,并使用( *)键将所有文本写入csv文件中的一个单元格中。
for i in folders:
files=glob.glob("/Users/hilo/Documents/digitization/ReleasedDataset_mp3/i/*.txt")
with open('writeData.csv', mode='w') as new_file:
writer = csv.writer(new_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for filename in files:
# Take all sentences from a given file
file = open(filename, 'rt')
text = file.read()
file.close()
for text in text:
writer.writerow((filename, text))这会产生一个空的CSV。有没有人建议解决代码中的问题?
发布于 2021-07-09 17:33:02
根据你在评论中提供的补充资料,我认为这是可行的:
import csv
import glob
import os
from pprint import pprint, pp
#root_folder = "/Users/hilo/Documents/digitization/ReleasedDataset_mp3"
root_folder = "/Stack Overflow/_test_files_root"
#folders = ['Becton Dickinson_20170803',
# 'CIGNA Corp._20170202',
# 'The Bank of New York Mellon Corp._20170720',
# 'JPMorgan Chase & Co._20170714']
folders = ['Subfolder1', 'Subfolder3']
filepaths = []
for subfolder in folders:
filepaths.extend(glob.glob(os.path.join(root_folder, subfolder, "*.txt")))
if os.name == 'nt': # Improve readability on Windows (optional)
filepaths[:] = [filepath.replace('\\', '/') for filepath in filepaths]
pprint(filepaths, width=128) # Show files to be processed (optional)
# Process the files.
with open('writeData.csv', mode='w', newline='') as new_file:
writer = csv.writer(new_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for filename in filepaths:
# Take all sentences from a given file.
with open(filename, 'rt') as file:
text = file.read()
# Write them into CSV along with filename.
writer.writerow((filename, text))
print('-FINI-')在Excel中创建的文件如下所示:
(我使用了各种在线新闻文章的文本进行测试。)

发布于 2021-07-09 00:03:37
您错过了第2行的字符串插补。
应该是files=glob.glob(f"/Users/hilo/Documents/digitization/ReleasedDataset_mp3/{i}/*.txt")
现在,它将替换循环中的i值,而不是将其解释为文字值。
https://stackoverflow.com/questions/68309791
复制相似问题