python导入csv文件时,出现SyntaxError
背景
np.loadtxt()
用于从文本加载数据。
文本文件中的每一行必须含有相同的数据。
loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
fname
要读取的文件、文件名、或生成器。dtype
数据类型,默认float。comments
注释。delimiter
分隔符,默认是空格。skiprows
跳过前几行读取,默认是0,必须是int整型。usecols
:要读取哪些列,0是第一列。例如,usecols = (1,4,5)将提取第2,第5和第6列。默认读取所有列。unpack
如果为True
,将分列读取。
问题
今天在ipython中读取文件时,
代码为:
import numpy as np
x = np.loadtxt('C:\Users\sunshine\Desktop\scjym_3yNp3Gj\源数据\000001.csv',delimiter= ',',skiprows=(1),usecols= (1,4,6),unpack= False)
出现下面的错误:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
编码错误,经搜索问题,发现采用如下解决方案:
r'C:\Users\expoperialed\Desktop\Python'
'C:\\Users\\expoperialed\\Desktop\\Python'
'C:/Users/expoperialed/Desktop/Python'
看到这里我就明白自己错在哪儿了。
书写字符串有几个需要注意的地方:
1. 长字符串
非常长的字符串,跨多行时,可以使用三个引号代替普通引号。
即:
print('''This is a very long string.
it will continue.
and it's not over yet.
''hello,world''
still here.'''
可以注意到,使用这种方式时,字符串中可以同时使用单引号和双引号
2.原始字符串
即print(r'c:\nwhere')
反斜线有特殊的作用,它会转义,可以帮助我们在字符串中加入单引号和双引号等不能直接加入的内容。
\n,换行符,可以存放于字符串中。
以上代码块中,很显然我们是想要一个路径,而如果不使用原始字符串,我们就会得到
c: where
。
对,为了防止这种情况,我们还可以使用反斜线进行转义,但是如果这个路径很长,就像本文的路径:
C:\\\Users\\\sunshine\\\Desktop\\\scjym_3yNp3Gj\\\源数据\\\000001.csv
使用双斜线,就会很麻烦。
这时,我们就可以用原始字符串。
原始字符串以r开头。
- 原始字符串结尾不能是反斜线。
- 如要结尾用反斜线,
print(r'C:\Programfiles\foo\bar' '\\')
即C:\Programfiles\foo\bar\
在常规python字符串中,\U字符组合表示扩展的Unicode代码点转义。
因此这里出现了错误。
python导入csv文件的三种方法
#原始的方式
lines = [line.split(',') for line in open('iris.csv')]
df = [[float(x) for x in line[:4]] for line in lines[1:]]
#使用numpy包
import numpy as np
lines = np.loadtxt('iris.csv',delimiter=',',dtype='str')
df = lines[1:,:4].astype('float')
#使用pandas包
import pandas as pd
df = pd.read_csv('iris.csv')
df=df.ix[:,:4]
这三种方法中最后一种最简单,不过花费时间比较长一点,第一种最麻烦,不过用时最短。这个可以通过ipython中的magic函数%%timeit
来看。
python导入csv文件时,出现SyntaxError的更多相关文章
- python导入csv文件出现SyntaxError问题分析
python导入csv文件出现SyntaxError问题分析 先简单描述下碰到的题目,要求是写出2个print的结果 可以看到,a指向了一个列表list对象,在Python中,这样的赋值语句,其实内部 ...
- 关于MySQL中使用LOAD DATA INFILE导入csv文件时的日期格式问题
在使用MySQL时,常常会用到Load Data Infile来导入数据,在遇到Date类型的列时,有时会遇到格式转换的问题: 首先创建一张简单的people表,包含名字,生日,年龄三个字段: mys ...
- 解决Gephi导入csv文件时提示“边表格需要一个包含节点标号‘源’和‘目标’列” 问题的两个方案
1.将csv文件在Excel中打开,并重新保存为csv. 2.将csv文件导入到sqlite,使用sqlite作为数据来源. 标准格式如下
- python写入csv文件时的乱码问题
今天在使用python的csv库将数据写入csv文件时候,出现了中文乱码问题,解决方法是在写入文件前,先指定utf-8编码,如下: import csv import codecs if __name ...
- 当用命令导入csv文件时提示错误[Err] 1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
安装之后没有my.ini配置文件怎么办,因为自己安装的是zip压缩版的mysql,所以再5.7之后就没有my.ini配置文件,所以有时候需要去自己创建一个叫my.ini的配置文件,但是特别 要 ...
- python 读csv文件时,在csv类型上执行类型转换
csv 产生的数据都是字符串类型的,它不会做任何其他类型的转换.如果需要做这样的类型转换,必须自己手动去实现 import csv,re from collections import namedtu ...
- python导入csv/txt文件
1. 导入csv文件 ### python导入csv文件的三种方法 ```python #原始的方式 lines = [line.split(',') for line in open('iris.c ...
- ACCESS导入CSV文件出现乱码解决办法
在ACCESS或Excel中导入CSV文件时常常出现乱码,这是因为简体中文版的windows操作系统及其应用软件默认都是ANSI/GBK编码,而导入的文件使用的编码与操作系统默认的编码不相符.出现这种 ...
- 使用python读写CSV文件
# -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/10/25 21:14' import csv with open('resu ...
随机推荐
- 【HackerRank】Service Lane
Calvin is driving his favorite vehicle on the 101 freeway. He notices that the check engine light o ...
- 【leetcode刷题笔记】Word Ladder II
Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from ...
- Linux进程中TIME_OUT解析
TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的.仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT.服务器在处理客户端请 ...
- JSP Cookie状态管理
JSP中创建与使用Cookie 创建Cookie对象 Cookie newCookie = new Cookie(String key, Object value); 写入Cookie对象 respo ...
- Java远程执行Shell命令
1. Jar包:ganymed-ssh2-build210.jar 2. 步骤: a) 连接: Connection conn = new Connection(ipAddr); conn.conne ...
- maven创建web工程Spring配置文件找不到
使用maven创建web工程,将Spring配置文件applicationContext.xml放在src/resource下,用eclipse编译时提示class path resource [ap ...
- 转:gdb相关学习
声明本文转自:http://www.cnblogs.com/rosesmall/archive/2012/04/12/2444431.html (查看内存部分有补充) 另推荐一个入门级的好文章:htt ...
- java基础(3)-多线程(1)
java多线程 进程与线程 进程:指一个正在执行的应用程序.每个进程执行都有一个执行顺序,该顺序称为一个执行路径或一个控制单元(进程是资源分配的最小单位).一个进程包含1~n个线程 线程:指进程中某个 ...
- php中浮点型变量
$d = (0.1+0.7)*10;//$d为8 //floor函数返回不大于value的最接近的整数,舍去小数部分取整 $e = floor($d);//$e为7 为什么$e为7,而不是8 因为$d ...
- 【转】移动oracle LOB索引到其他表空间
http://blog.chinaunix.net/uid-22948773-id-3451103.html