背景
np.loadtxt()用于從文本加載數(shù)據(jù)。
文本文件中的每一行必須含有相同的數(shù)據(jù)。
***
loadtxt(fname,dtype=<class'float'>,comments='#',delimiter=None,converters=None,skiprows=0,usecols=None,unpack=False,ndmin=0)
fname要讀取的文件、文件名、或生成器。
dtype數(shù)據(jù)類型,默認float。
comments注釋。
delimiter分隔符,默認是空格。
skiprows跳過前幾行讀取,默認是0,必須是int整型。
usecols:要讀取哪些列,0是第一列。例如,usecols=(1,4,5)將提取第2,第5和第6列。默認讀取所有列。
unpack如果為True,將分列讀取。
問題
今天在ipython中讀取文件時,
代碼為:
import numpy as npx = np.loadtxt('C:/Users/sunshine/Desktop/scjym_3yNp3Gj/源數(shù)據(jù)/000001.csv',delimiter= ',',skiprows=(1),usecols= (1,4,6),unpack= False)出現(xiàn)下面的錯誤:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated /UXXXXXXXX escape
編碼錯誤,經(jīng)搜索問題,發(fā)現(xiàn)采用如下解決方案:
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')
反斜線有特殊的作用,它會轉(zhuǎn)義,可以幫助我們在字符串中加入單引號和雙引號等不能直接加入的內(nèi)容。
/n,換行符,可以存放于字符串中。
以上代碼塊中,很顯然我們是想要一個路徑,而如果不使用原始字符串,我們就會得到
c:where。
對,為了防止這種情況,我們還可以使用反斜線進行轉(zhuǎn)義,但是如果這個路徑很長,就像本文的路徑:
C:///Users///sunshine///Desktop///scjym_3yNp3Gj///源數(shù)據(jù)///000001.csv
使用雙斜線,就會很麻煩。
這時,我們就可以用原始字符串。
原始字符串以r開頭。
原始字符串結(jié)尾不能是反斜線。
如要結(jié)尾用反斜線,print(r'C:/Programfiles/foo/bar''//')即C:/Programfiles/foo/bar/
在常規(guī)python字符串中,/U字符組合表示擴展的Unicode代碼點轉(zhuǎn)義。
因此這里出現(xiàn)了錯誤。
新聞熱點
疑難解答