我有一个CSV文件,其中的列使用非标准符号(|| /)分隔。
use std::rc::Rc;
use std::cell::RefCell;
use futures::channel::oneshot::channel;
use futures::executor::{ThreadPool, block_on};
fn main() {
let pool = ThreadPool::new().unwrap();
let (send, recv) = channel();
let (send2, recv2) = channel();
pool.spawn_ok(async move {
let thread_unsafe = Rc::new(RefCell::new(40));
let a = recv.await.unwrap();
send2.send(a + *thread_unsafe.borrow()).unwrap();
});
let r = block_on(async {
send.send(2).unwrap();
recv2.await.unwrap()
});
println!("the answer is {}", r)
}
这会引发错误:
ParserError:第3行中应该有61个字段,看到68。错误可能是由于使用多字符定界符时引号被忽略了。
您能帮我如何阅读此文件吗?
答案 0 :(得分:4)
sep :str,默认为“,”:要使用的分隔符。 ...此外,超过1个字符且与'\ s +'不同的分隔符将被解释为正则表达式,并且还将强制使用Python解析引擎。
|
是正则表达式语法中的特殊字符(表示OR),因此您需要对其进行转义,因此需要
df = pd.read_csv('data_analyst_assignment.csv',sep='\|\|/', engine='python')