1. 在python中,怎麼可以通過一個字元串獲得其所在行的所有信息呢
簡單的這種查找即用「in」指令就可以。
例如你要搜索的是一個文本,那麼可以用readlin()逐行讀取文本
然後對每一個line進行判斷:
if 'think' in line:
print(line)
當然,如果進行更復雜的匹配就要用正則表達式了
如果不會的話可以去網上找找教程,我沒法給你說,因為光正則表達式本身的教程就是可以出一本書的……
2. 怎麼用python讀取txt文件里指定行的內容,並導入excel
一、讀excel表
讀excel要用到xlrd模塊,官網安裝(http://pypi.python.org/pypi/xlrd)。然後就可以跟著裡面的例子稍微試一下就知道怎麼用了。大概的流程是這樣的:
1、導入模塊
復制代碼代碼如下:
import xlrd
2、打開Excel文件讀取數據
復制代碼代碼如下:
data = xlrd.open_workbook('excel.xls')
3、獲取一個工作表
① table = data.sheets()[0] #通過索引順序獲取
② table = data.sheet_by_index(0) #通過索引順序獲取
③ table = data.sheet_by_name(u'Sheet1')#通過名稱獲取
4、獲取整行和整列的值(返回數組)
復制代碼代碼如下:
table.row_values(i)
table.col_values(i)
5、獲取行數和列數
復制代碼代碼如下:
table.nrows
table.ncols
6、獲取單元格
復制代碼代碼如下:
table.cell(0,0).value
table.cell(2,3).value
就我自己使用的時候覺得還是獲取cell最有用,這就相當於是給了你一個二維數組,餘下你就可以想怎麼干就怎麼幹了。得益於這個十分好用的庫代碼很是簡潔。但是還是有若干坑的存在導致話了一定時間探索。現在列出來供後人參考吧:
1、首先就是我的統計是根據姓名統計各個表中的信息的,但是調試發現不同的表中各個名字貌似不能夠匹配,開始懷疑過編碼問題,不過後來發現是因為空格。因為在excel中輸入的時候很可能會順手在一些名字後面加上幾個空格或是tab鍵,這樣看起來沒什麼差別,但是程序處理的時候這就是兩個完全不同的串了。我的解決方法是給每個獲取的字元串都加上strip()處理一下。效果良好
2、還是字元串的匹配,在判斷某個單元格中的字元串(中文)是否等於我所給出的的時候發現無法匹配,並且各種unicode也不太奏效,網路過一些解決方案,但是都比較復雜或是沒用。最後我採用了一個比較變通的方式:直接從excel中獲取我想要的值再進行比較,效果是不錯就是通用行不太好,個呢不能問題還沒解決。
二、寫excel表
寫excel表要用到xlwt模塊,官網下載(http://pypi.python.org/pypi/xlwt)。大致使用流程如下:
1、導入模塊
復制代碼代碼如下:
import xlwt
2、創建workbook(其實就是excel,後來保存一下就行)
復制代碼代碼如下:
workbook = xlwt.Workbook(encoding = 'ascii')
3、創建表
復制代碼代碼如下:
worksheet = workbook.add_sheet('My Worksheet')
4、往單元格內寫入內容
復制代碼代碼如下:
worksheet.write(0, 0, label = 'Row 0, Column 0 Value')
5、保存
復制代碼代碼如下:
workbook.save('Excel_Workbook.xls')
由於我的需求比較簡單,所以這上面沒遇到什麼問題,唯一的就是建議還是用ascii編碼,不然可能會有一些詭異的現象。
當然xlwt功能遠遠不止這些,他甚至可以設置各種樣式之類的。附上一點例子
復制代碼代碼如下:
Examples Generating Excel Documents Using Python's xlwt
Here are some simple examples using Python's xlwt library to dynamically generate Excel documents.
Please note a useful alternative may be ezodf, which allows you to generate ODS (Open Document Spreadsheet) files for LibreOffi
3. python讀取文本內每行指定內容
可以參考下面的代碼:
f=file(yourpath)
for line in f:
t = line.split("==")
part_1 = t[0] + "=="
(part_2,part_3) = t[1].split("--")
del t
print "第一段:%s 第二段:%s 第三段:%s" %(part_1,part_2,part_3)
(3)python腳本按字元串讀取文本中的一行擴展閱讀:
python參考函數
callable(obj) 查看一個obj是不是可以像函數一樣調用
repr(obj) 得到obj的表示字元串,可以利用這個字元串eval重建該對象的一個拷貝
eval_r(str) 表示合法的python表達式,返回這個表達式
hasattr(obj,name) 查看一個obj的name space中是否有name
setattr(obj,name,value) 為一個obj的name space中的一個name指向vale這個object
4. Python程序,要求打開一個文本文件,從固定行開始讀取一直讀取某一匹配結果的前一行
實現此功能的代碼如下:
f = open('xx.txt')
lines = f.readlines()
f.close()
l_list = lines[1:] #從第二行開始
for l in l_list:
if l.find('a') ==-1:
print l #在沒有找到a之前一直列印
else:
break #如果找到,則跳出循環
(4)python腳本按字元串讀取文本中的一行擴展閱讀:
用python讀取文本文件,對讀出的每一行進行操作的實現方式如下:
f=open("test.txt","r")
whileTrue:
line=f.readline()
ifline:
pass
line=line.strip()
p=line.rfind('.')
filename=line[0:p]
print"create%s"%line
else:
break
f.close()
5. 用python讀取文本文件,對讀出的每一行進行操作,這個怎麼寫
用python讀取文本文件,對讀出的每一行進行操作,寫法如下:
f=open("test.txt","r")
whileTrue:
line=f.readline()
ifline:
pass#dosomethinghere
line=line.strip()
p=line.rfind('.')
filename=line[0:p]
print"create%s"%line
else:
break
f.close()
6. python怎麼從鍵盤以字元串形式讀取一行數值,以空格分割字元串成列表,轉換列表
可以一次全讀過,用split()函數生成list,再轉成整就行了。
如下,自己執行看看結果,a.txt里是用空格分開的數據.
>>> f=open("c:\\a.txt")
>>> s=f.read()
>>> print(s)
>>> print(s.split())