从多个文件夹中读取python中的文本文件。我丢失了标点符号

时间:2017-10-05 10:46:40

标签: python

我有一个名为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

2 个答案:

答案 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()的副本。

why should I make a copy of a data frame in pandas