檔案操作之檔案中的內容轉換為列表裡面的字典

2021-09-29 00:16:22 字數 4601 閱讀 2827

# 3.檔案a.txt內容:每一行內容分別為商品名字,價錢,個數。 (20分鐘)

## tesla 100000 1

# mac 3000 2

# lenovo 30000 3

# chicken 10 3

思路:1:將所有的文字拿出來,然後進行提取鍵和值

2:先拿鍵,在拿值

3:開闢新的空間的時候可以用深淺拷貝

4:也可以通過for迴圈跟while搭配來做題

5:核心思想是要抓住鍵值是一一對應的

總結:做題講究死去活來

做題前先把題寫死

然後再往靈活裡面寫

做題也講究拆分

先把題拆成一塊一塊的

然後再經過模擬

把他們加起來

當拿到鍵跟值無法組成字典的時候

將字典的鍵放到乙個列表裡面

迴圈鍵的字典,然後拿到值得列表

通過一一對應,把他們對接起來

方法二

with

open

("home03-1.txt"

,mode=

"r",encoding=

"utf-8"

)as f:

lst = f.readlines(

)#將值全部放到乙個列表中

lst1 =

for i in lst:))

print

(lst1)

lst2 =

for i in

range

(len

(lst1)):

print

(i) dic =

if i ==5:

break

for x in

range

(len

(lst1[i]))

: dic[lst1[0]

[x]]

= lst1[i+1]

[x]# print(lst1[0][x])

# print(lst1[i+1][x])

print

(lst2)

方法二精簡:

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

****

with

open

("home03-1.txt"

,mode=

"r",encoding=

"utf-8"

)as f:

lst = f.readlines(

)#將值全部放到乙個列表中

lst1 =

lst2 =

for i in lst:

).split())

for i in

range

(len

(lst1)):

dic =

if i ==5:

break

for x in

range

(len

(lst1[i]))

: dic[lst1[0]

[x]]

= lst1[i+1]

[x]print

(lst2)

# 次方法乃是把所有的內容放到乙個列表裡面,然後根據索引進行查詢賦值,跟分開切割有異曲同工之妙

# for i in lst:

# len(i.split())

# for x in range(len(i.split())):

# print(x)

# dic = {}

# if x == 5:

# break

# for j in range(len(x)):

# dic[lst1[0][j]] = lst1[x + 1][j]

# print(lst2)

# 次方法乃是把所有的內容放到乙個列表裡面,然後根據索引進行查詢賦值,跟分開切割有異曲同工之妙

#方法三:

# dict1=dict()

# list2=list()

# for each_key in list1[0].split():

# dict1.setdefault(each_key,none)

# print("獲取到的鍵的值:",dict1)

# for each in list1[1:]: #開始迴圈值

# list3=each.split() #將值變為列表

# print("值變為列表list3:",list3)

# count=0

# for each_key in dict1.keys():

# print("鍵的值為:",each_key)

# if list3[count].isdigit(): #判斷是不是數字,如果是數字,就將他轉為int在新增進去 ->>因為從檔案中拿到的都是字串

# dict1[each_key]=int(list3[count])

# print("有沒有值?:",dict1[each_key])

# else:

# dict1[each_key]=list3[count]

# print("沒有值得時候",dict1[each_key])

# count+=1

# print(dict1)

# print(dict1)

# print(list2)

方法四:

lst =

list()

f =open

("home03-1.txt"

, mode=

"r", encoding=

"utf-8"

)title = f.readline(

).strip(

).split(

)#讀取鍵 直接去除兩邊的空格然後把他變為列表 變為列表就好找值了

print

(title)

for el in f:

dic =

dict()

#每次新增完將他變為新字典,防止公用同乙個記憶體空間

mes = el.strip(

).split(

)#將剩下的行變為列表

print

(mes)

for i in

range

(len

(title)):

#既然是一一對應,那麼這個時候為什麼用標題的長度:用標題的長度是因為值是在一直變化的,每次都需要計算,理論上來說節省了執行速度

dic[title[i]

]= mes[i]

#鍵跟值一一對應

# 新增字典到列表中

print

(lst)

方法五:

key =

for c in con:

if c =='':

continue

for i in f:

if i ==

'序號 部門 人數 平均年齡 備註\n'

:continue

print

(i) lis = i.strip(

).split(

' ')

n =0 dic =

for li in lis:

if li =='':

continue

print

(li)

dic[key[n]

]= li

n +=

1print

(lis1)

方法六:

li =

with

open

('home03-1.txt'

, encoding=

'utf-8'

, mode=

'r')

as f1:

lst= f1.readline(

).strip(

).split(

)#讀取一行並把他們轉為列表:取了鍵

print

(lst)

for i in f1:

#剩下的內容,也就是字典的值

print

(i) lst2 = i.strip(

).split(

)print

(lst2)

dic =

dict

(zip

(lst, lst2)

)print

(li)

操作檔案 修改檔案中的內容

import os geci open a.txt encoding utf 8 new geci open a1.txt w encoding utf 8 for line in geci change line.replace 一 1 new geci.write change geci.clo...

檔案的內容操作

開啟,追加方式 fp fopen demo.txt a rewind fp echo ftell fp 預設在檔案末尾追加 fwrite fp,hello world n 關閉 fclose fp 開啟 fp fopen demo.txt r echo ftell fp fseek fp,4 將指標...

如何轉換任何配置檔案 檔案中的內容

web.config 通過web.release.config 和web.debug.config檔案來實現不同編譯配置下生成不同的配置檔案,以便我們更好的檢視,修改 維護 這樣我們如何像web.config 那樣優雅的處理這種轉換呢?本文中提及的外掛程式就是解決這個問題的 slowcheetah ...