如何通过消除换行符来读取csv文件?

时间:2017-04-29 12:02:50

标签: python csv pandas newline

我有一个格式为:

的csv文件
       text                    label 
it was incredible!!            1
the politician was exhausted     0
'and so was little Sebastian!'   0

我正在尝试使用pandas阅读它:

train = pd.read_csv("myfile.csv", header = 0, delimiter = "\t", quoting = 3)
print(train.shape)

打印火车的形状给了我两倍于csv文件中有条件存在的行数。 我发现的问题是数据框train中的备用行被换行符分割,以便train["text"][0]给出:

  

“真令人难以置信!”

train["text"][1]给出:

  

类似的是每个备用线对的结果,因此导致原始尺寸的两倍。我想出了可能的原因可能是在将我的元组列表(即mylist = [(text, '1'), (text, '0')..])写入csv文件之前,打印mylist[0]给出:

  

('令人难以置信\ n','1')

同样,mylist [2]会给出:

  

(“'所以小塞巴斯蒂安!'\ n”,'0')

即。在每个文本的末尾以某种方式附加'\ n'。有没有办法通过消除'\ n'字符来阻止这些行拆分?

3 个答案:

答案 0 :(得分:1)

您可以使用declare @col sysname; declare @sql nvarchar(max); select @col = DatabaseColumnName from column_name_table where id = 98); set @sql = ' SELECT EmployeeID, LTRIM(RTRIM(m.n.value(''.[1]'',''varchar(8000)''))) AS '+@col+' FROM ( SELECT EmployeeID,CAST(''<XMLRoot><RowData>'' + REPLACE('+@col+','','',''</RowData><RowData>'') + ''</RowData></XMLRoot>'' AS XML) AS x FROM some_table )t CROSS APPLY x.nodes(''/XMLRoot/RowData'')m(n) ' exec sp_executesql @sql;

对最后一个字符进行切片
[:-1]

或将line = 'x,y,z\n' print line[:-1] # Out: x,y,z 替换为'\n'

''

答案 1 :(得分:1)

你想要的是从任何尾随的换行符中删除你的火车数据,这可以用Python字符串方法rstrip为字符串完成:

 <tbody>
       @foreach($collection as $eventreport)
         @foreach($eventreport as $employ)
            <tr>
               <td> {{$employ->fio}}  </td>
               <td> {{$employ->appoint_name}}  </td>
               <td> {{$employ->subdiv_name}}  </td>
               <td> {{$employ->datetimeevent}}  </td>
               <td> {{$employ->typepass}}  </td>
            </tr>
         @endforeach
       @endforeach
    </tbody>

同样对于pandas时间序列,方法是:

.rstrip('\n')

(见http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.strip.html

答案 2 :(得分:-1)

我会给你一个想法:

test = "hi \n"
print test
print test[:-1]

使用[:-1]可以切片最后一个字符