溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python 統(tǒng)計(jì)文件中的字符串?dāng)?shù)目示例

發(fā)布時間:2020-09-21 18:02:18 來源:腳本之家 閱讀:223 作者:huaibei_北 欄目:開發(fā)技術(shù)

題目:

一個txt文件中已知數(shù)據(jù)格式為:

C4D
C4D/maya
C4D
C4D/su
C4D/max/AE

統(tǒng)計(jì)每個字段出現(xiàn)的次數(shù),比如C4D、maya

先讀取文件,將文件中的數(shù)據(jù)抽取出來:

def getWords(filepath):
  file = open(filepath)
  wordOne=[]
  while(file):
    line = file.readline()
    word = line.split('/')
    wordOne.extend(word)
    if(not line):      #若讀取結(jié)束了
      break 
  wordtwo=[]
  for i in wordOne:
    wordtwo.extend(i.split())
  return wordtwo

說明:這個有一個要注意的地方是文件是被”\n”,”/”兩種格式分割而來的,因此需要split兩次。

然后定義一個dict,遍歷數(shù)據(jù),代碼如下所示:

def getWordNum(words):
  dictWord={}
  for i in words:
    if(i not in dictWord):
      dictWord[i]=0
    dictWord[i]+=1
  return dictWord

主函數(shù)的調(diào)用:

filepath='data/new.txt'
words = getWords(filepath)
dictword = getWordNum(words)
print(dictword)

結(jié)果:

{'C4D': 9, 'max': 1, 'su': 1, 'maya': 1, 'AE': 3}

說明:

1,

print(type(word)) 
print(type(splitData[0])) 

輸出為:

<class 'list'>
<class 'str'>


就是當(dāng)splitData.extend()執(zhí)行之后就將原本是list類型的數(shù)據(jù)轉(zhuǎn)換成str類型的存儲起來。只有對str類型的數(shù)據(jù)才能用split函數(shù)

2,

import os 
print(os.getcwd()) 

這個可以輸出當(dāng)前所在位置,對于讀取文件很有用。

在讀入文件并對文件進(jìn)行切分的時候,若是含有的切分詞太多,那么使用re.split()方法是最方便的,如下所示:

filepath='data/new.txt'
file = open(filepath)    #讀取文件
wordOne=[]
symbol = '\n/'       #定義分隔符
symbol = "["+symbol+"]"   #拼接正則表達(dá)式
while(file):
  line = file.readline()
  word = re.split(symbol,line)
  wordOne.extend(word)
  if(not line):
    break
#通過上式得到的list中會含有很多的空字符串,所以要去空
wordOne = [x for x in wordOne if x]

以上這篇python 統(tǒng)計(jì)文件中的字符串?dāng)?shù)目示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI