背景

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的更多相关文章

  1. python导入csv文件出现SyntaxError问题分析

    python导入csv文件出现SyntaxError问题分析 先简单描述下碰到的题目,要求是写出2个print的结果 可以看到,a指向了一个列表list对象,在Python中,这样的赋值语句,其实内部 ...

  2. 关于MySQL中使用LOAD DATA INFILE导入csv文件时的日期格式问题

    在使用MySQL时,常常会用到Load Data Infile来导入数据,在遇到Date类型的列时,有时会遇到格式转换的问题: 首先创建一张简单的people表,包含名字,生日,年龄三个字段: mys ...

  3. 解决Gephi导入csv文件时提示“边表格需要一个包含节点标号‘源’和‘目标’列” 问题的两个方案

    1.将csv文件在Excel中打开,并重新保存为csv. 2.将csv文件导入到sqlite,使用sqlite作为数据来源. 标准格式如下

  4. python写入csv文件时的乱码问题

    今天在使用python的csv库将数据写入csv文件时候,出现了中文乱码问题,解决方法是在写入文件前,先指定utf-8编码,如下: import csv import codecs if __name ...

  5. 当用命令导入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的配置文件,但是特别 要 ...

  6. python 读csv文件时,在csv类型上执行类型转换

    csv 产生的数据都是字符串类型的,它不会做任何其他类型的转换.如果需要做这样的类型转换,必须自己手动去实现 import csv,re from collections import namedtu ...

  7. python导入csv/txt文件

    1. 导入csv文件 ### python导入csv文件的三种方法 ```python #原始的方式 lines = [line.split(',') for line in open('iris.c ...

  8. ACCESS导入CSV文件出现乱码解决办法

    在ACCESS或Excel中导入CSV文件时常常出现乱码,这是因为简体中文版的windows操作系统及其应用软件默认都是ANSI/GBK编码,而导入的文件使用的编码与操作系统默认的编码不相符.出现这种 ...

  9. 使用python读写CSV文件

    # -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/10/25 21:14' import csv with open('resu ...

随机推荐

  1. Array.asList:数组转list

    String s[]={"aa","bb","cc"}; List<String> sList=Arrays.asList(s) ...

  2. 写给后端程序员的HTTP缓存原理介绍--怎样决定一个资源的Cache-Control策略呢

    通过Internet获取资源既缓慢,成本又高.为此,Http协议里包含了控制缓存的部分,以使Http客户端可以缓存和重用以前获 取的资源,从而优化性能,提升体验.虽然Http中关于缓存控制的部分,随着 ...

  3. ANSI C和POSIX

    简单的说 ANSI C:标准C API(对应fopen) POSIX:方便在Linux下运行的C API(对应open)

  4. C++中容器的使用(一)

    C++中有两种类型的容器:顺序容器和关联容器. 顺序容器主要有vector.list.deque等.其中vector表示一段连续的内存,基于数组实现,list表示非连续的内存,基于链表实现,deque ...

  5. 【bzoj5055】膜法师(离散化+树状数组)

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=5055 这道题……不得不说,从标题到题面都能看出一股浓浓的膜法气息……苟…… 题意就是统计顺序 ...

  6. spring boot 使用thymeleaf3.0以及thymeleaf的热部署

    spring boot 截止1.5.4,默认使用thymeleaf2.0,会有一些很蛋疼的地方比如xml格式之类的,具体哪些就不说了 -> 替换为3.0版本 pom中加入 <propert ...

  7. LeetCode——same-tree

    Question Given two binary trees, write a function to check if they are equal or not. Two binary tree ...

  8. JavaWeb -- Jsp中的 EL表达式

    lEL 全名为Expression Language.EL主要作用: l获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.(某个web ...

  9. tp5定时器

    # 定时器 * * * * * cd /home/wwwroot/default/dexin/dragon && /usr/bin/php think order --option 1 ...

  10. Thinkpad个性化设置:F1~F12恢复正常按键,Fn与Ctrl按键互换

    一.F1~F12恢复正常按键 联想Thinkpad的F1~F12键功能与其他笔记本是相反的! 也就是说,如果不按着Fn,按那几个功能键,实现的是属性设置的功能,比如直接按下F1键是静音,F2键是音量降 ...