我有一个名为x_list
的文件夹,其子文件夹名为[y1,y2 ... y10]
。在这些子文件夹中是文本文件。我需要将这些文本文件读入Python,并带有来自x-list
的相应子文件夹名称。
我有以下代码,这是有效的。唯一的问题是文本文件正在丢失标点符号。我相信错误在append
函数中。
df = pd.DataFrame()
x_list = os.listdir(x_path) #list with classes
for i in range(0,len(x_list)):
x_path2 = x_path+"/"+ x_list[i]
files = os.listdir(x_path2)
#Read all the documents from the subfolder and fill the dataframe
for j in range(0,len(files)):
p = x_path2+"/" + files[j]
f = open(p,"r")
df = df.append({'text':f.read(), 'class':x_list[i]}, ignore_index =True)
f.close()
文字包含日期,但在输出中,日期显示为01012017
而不是01-01-2017
。点数,逗号和货币也会丢失。
我如何解决这个问题,所以我不会丢失标点符号。
输出应如下所示:
text class
Welcome blabla 20-09-2017 y1
Goodbye blabla 23-09-2017 y1
lorum es ti date 09-09-2017 y2
答案 0 :(得分:0)
我已尝试过您的代码,它会出现此错误:
NotADirectoryError:[WinError 267]目录名无效: ' C:\用户\用户\桌面\ FOO \ asd.txt'
这是我的代码:
import pandas as pd
import os
df = pd.DataFrame()
x_path = r"C:\Users\user\Desktop\foo"
files = os.listdir(x_path)
for file in files:
p = x_path + "/" + file
with open(p) as f:
df = df.append({'text':f.read(), 'class':file}, ignore_index =True)
print(df)
有了这个,没有标点符号问题。输出:(我使用的是Windows 10)
class text
0 asd.txt Welcome blabla 20-09-2017
1 qwe.txt Goodbye blabla 23-09-2017
2 zxc.txt lorum es ti date 09-09-2017
如果您尝试使用此代码但标点符号仍然消失,请与我们联系。
另外,如果您不熟悉with
语句,请使用:
...
f = open(p)
df = df.append({'text':f.read(), 'class':file}, ignore_index =True)
f.close()
...
答案 1 :(得分:0)
感谢您的意见,但我已经解决了。这个问题比我想象的要简单一些。我有一个方法,删除标点符号。我通过df
代替dfraw = df
制作了dfraw = df.copy()
的副本。