Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 69xx日本,成人激情视频在线观看,亚洲精品高清国产麻豆专区

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          pandasData爬蟲數(shù)據(jù)清洗方法

          pandasData爬蟲數(shù)據(jù)清洗方法

          Python中進(jìn)行爬蟲數(shù)據(jù)清洗時(shí),通常需要對(duì)從網(wǎng)頁(yè)中提取的原始數(shù)據(jù)進(jìn)行處理,以去除無用信息、格式化數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)類型等,以便于后續(xù)分析或存儲(chǔ)。以下是一些常用的數(shù)據(jù)清洗步驟和方法:

          去除HTML標(biāo)簽: 使用BeautifulSoup或lxml庫(kù)來解析HTML文檔,并提取所需的文本內(nèi)容。

          from bs4 import BeautifulSoup

          soup=BeautifulSoup(html_content, 'html.parser')

          text_data=soup.get_text()


          去除空白字符: 使用字符串的.strip()方法去除字符串兩端的空格、換行符和制表符。

          cleaned_string=original_string.strip()


          替換或刪除特定字符: 使用字符串的.replace()方法替換不需要的字符或字符串。

          cleaned_string=original_string.replace('特定字符', '')


          規(guī)范化文本: 使用正則表達(dá)式進(jìn)行文本規(guī)范化,例如統(tǒng)一大小寫、移除HTML實(shí)體、標(biāo)準(zhǔn)化日期格式等。

          import re

          cleaned_string=re.sub(r'<[^>]+>', '', original_string) # 移除HTML標(biāo)簽

          cleaned_string=original_string.lower() # 統(tǒng)一小寫


          數(shù)據(jù)類型轉(zhuǎn)換: 將字符串轉(zhuǎn)換為整數(shù)、浮點(diǎn)數(shù)或日期等適當(dāng)?shù)臄?shù)據(jù)類型。

          number=int(original_string)

          date=datetime.strptime(original_date_string, '%Y-%m-%d')


          去除重復(fù)數(shù)據(jù): 如果數(shù)據(jù)集中有重復(fù)的項(xiàng),可以使用集合(set)或數(shù)據(jù)框架(pandas DataFrame)的去重功能來去除它們。

          unique_data=list(set(original_data))

          df=df.drop_duplicates() # pandas DataFrame去重


          填充缺失值: 使用適當(dāng)?shù)姆椒ㄌ畛鋽?shù)據(jù)集中的缺失值,如使用平均值、中位數(shù)或特定的占位符。

          df['column']=df['column'].fillna(df['column'].mean())


          數(shù)據(jù)規(guī)范化和標(biāo)準(zhǔn)化: 對(duì)數(shù)據(jù)進(jìn)行規(guī)范化(歸一化)或標(biāo)準(zhǔn)化(z-score標(biāo)準(zhǔn)化),使其滿足后續(xù)算法的輸入要求。

          from sklearn.preprocessing import StandardScaler

          scaler=StandardScaler()

          df['normalized_column']=scaler.fit_transform(df[['column']])


          編碼轉(zhuǎn)換: 對(duì)非英文或含有特殊字符的字符串進(jìn)行編碼轉(zhuǎn)換,確保數(shù)據(jù)的一致性。

          encoded_string=original_string.encode('utf-8').decode('utf-8')


          數(shù)據(jù)清洗流程自動(dòng)化: 使用pandas等庫(kù)提供的功能,將數(shù)據(jù)清洗流程自動(dòng)化,并保存為可重用的腳本或函數(shù)。

          import pandas as pd

          def clean_data(df):

          # 執(zhí)行數(shù)據(jù)清洗步驟

          df.dropna(inplace=True)

          df['column']=pd.to_numeric(df['column'], errors='coerce')

          # ... 其他清洗步驟

          return df

          df_cleaned=clean_data(df_original)


          數(shù)據(jù)清洗是一個(gè)迭代和不斷細(xì)化的過程,需要根據(jù)實(shí)際數(shù)據(jù)和業(yè)務(wù)需求不斷調(diào)整和優(yōu)化。在進(jìn)行數(shù)據(jù)清洗時(shí),建議保留原始數(shù)據(jù),以便必要時(shí)回溯或驗(yàn)證清洗步驟。

          Markdown文檔的好處

          相信很多朋友在開發(fā)和工作過程中都會(huì)使用MarkDown格式來編寫文檔,Markdown文檔的好處多多:

          • 它基于純文本,方便修改和共享;
          • 幾乎可以在所有的文本編輯器中編寫;
          • 有眾多編程語(yǔ)言的實(shí)現(xiàn)和應(yīng)用的相關(guān)擴(kuò)展;
          • 在 GitHub 等網(wǎng)站中有很好的應(yīng)用;
          • 很容易轉(zhuǎn)換為 HTML 文檔或其他格式;
          • 適合用來編寫文檔、記錄筆記、撰寫文章。

          而在眾多的MarkDown文檔的編輯器中,我們比較常用的一款工具是Typora,前幾年是免費(fèi)的,最近1.0正式版以后開始要收費(fèi)了。

          Typora的優(yōu)勢(shì)

          Typora容許隨時(shí)隨地開展無縫拼接瀏覽,從而可以在編輯的同時(shí)及時(shí)的看到效果。筆者現(xiàn)在寫這個(gè)文檔就是使用的這個(gè)工具。它有以下好處:

          1. 在Win,Mac和Linux上能用
          2. 它具備審校作用,能夠檢查拼讀和英語(yǔ)的語(yǔ)法
          3. 全自動(dòng)匹配Markdown標(biāo)記,比如括弧
          4. 支持大概100種語(yǔ)言并支持英語(yǔ)的語(yǔ)法突顯
          5. 豐富多彩的作用和鍵盤快捷鍵
          6. 與內(nèi)聯(lián)公式和顯示信息公式適配

          Typora的不足

          工具可以做到圖文并茂的編寫文檔,所有插入的圖片默認(rèn)放在當(dāng)前文檔的assets目錄下,也可以通過設(shè)置指定圖片保存的位置,使用起來很方便。

          但不足的是,如果文檔進(jìn)行了修改,圖片從文檔中刪除了,殘留在當(dāng)前目錄下的assets目錄下的圖片并不會(huì)一同刪除。隨著文檔不斷的更新和修改,這個(gè)目錄下的圖片文件會(huì)越留越多,有時(shí)多達(dá)幾十M。不但占用空間,而且毫無用處。

          雖然我們可以手動(dòng)點(diǎn)擊每張圖片查看具體是哪張圖片,再一張張手工去刪除,但圖片如果多的話,也是很繁瑣的事情,而且考驗(yàn)人的耐心。

          我們能不能自己寫個(gè)程序,分析整個(gè)Markdown文檔中的圖片地址,然后批量刪除呢?有了這個(gè)想法以后,我就自己花了一些時(shí)間做了一個(gè),目前已經(jīng)使用了一年多了,沒有發(fā)現(xiàn)什么問題,特意寫出來分享給大家。

          實(shí)現(xiàn)思路

          思路

          首先我們需要分析Markdown文檔的格式,它本質(zhì)上就是一個(gè)文本文件。大致實(shí)現(xiàn)思路如下:

          1. 使用Java中的IO流API對(duì)文檔進(jìn)行解析
          2. 找到文檔中圖片的地址,使用正則表達(dá)式進(jìn)行分析,將所有文檔中出現(xiàn)的圖片文件名保存成一個(gè)集合。
          3. 再到assets文件夾下去查找所有的圖片文件名,也保存成一個(gè)集合。
          4. 對(duì)比兩個(gè)文件名的集合,將在assets目錄下存在的文件,文檔中不存在的圖片文件全部找出來
          5. 刪除所有不存在的圖片文件

          源代碼

          package org.newboy.utils;
          
          import org.apache.commons.io.FileUtils;
          import org.apache.commons.lang3.StringUtils;
          
          import java.io.File;
          import java.io.IOException;
          import java.util.Collection;
          import java.util.HashSet;
          import java.util.Scanner;
          import java.util.regex.Matcher;
          import java.util.regex.Pattern;
          
          /**
           * @author NewBoy
           * @version 1.0
           * @since 2020-12-04
           * 刪除MarkDown目錄下多余的圖片文件
           */
          public class MarkDownPictureCleaner {
          
          
              public static void main(String[] args) {
                  System.out.println("===MarkDown下冗余圖片清理工具(開發(fā)者:NewBoy 版本:1.0)===");
          
                  Scanner scanner=new Scanner(System.in);
          
                  //MarkDown的文件名
                  String path=null;
                  try {
                      System.out.println("請(qǐng)輸入Markdown文件的路徑和文件名(可直接將md文件拖到命令窗口):");
                      path=scanner.nextLine();
                  } catch (Exception e) { // 用戶可能按下 Ctrl + C 終止程序
                      System.out.println("程序結(jié)束!");
                      scanner.close();
                      System.exit(0);
                  }
          
                  // 預(yù)檢查,判斷用戶輸入的文件是否存在
                  File file=null;
          
                  //圖片所在目錄
                  String picDir=null;
          
                  if (StringUtils.isNotBlank(path)) {
                      //如果用戶在DOS命令窗口拖入,前后有雙引號(hào),去掉雙引號(hào)
                      path=path.trim().replace("\"", "");
                      //創(chuàng)建文件對(duì)象
                      file=new File(path);
                      if (!file.exists()) {
                          System.out.println("Markdown文件不存在!");
                          file=null;
                      }
                      else {
                          System.out.println("請(qǐng)輸入圖片目錄(默認(rèn)為assets):");
                          //圖片所在目錄
                          picDir=scanner.nextLine();
                          //如果為空,空串,或者空格
                          if (StringUtils.isBlank(picDir)) {
                              picDir="assets";
                          }
                      }
                  }
          
                  // 讀取 Markdown 文件的內(nèi)容
                  String content=null;
                  if (file !=null) { // 如果用戶輸入的文件不存在,跳過此次操作
                      System.out.println("您輸入的路徑:" + file.getAbsolutePath());
                      try {
                          content=FileUtils.readFileToString(file, "UTF-8");
                      } catch (IOException e) {
                          System.out.println("文件讀取異常:" + e.getMessage());
                          content=null;
                      }
                  }
          
                  if (content !=null) {
                      // 找出 Markdown 文件中所有圖片的引用
                      String regex="(!\\[.*\\])(\\(.*\\))|(<img\\b.*?(?:\\>|\\/>))"; // 捕獲組,匹配類似于 "![*](*)" 的字符串
                      Pattern pattern=Pattern.compile(regex);
                      Matcher matcher=pattern.matcher(content);
                      HashSet<String> picturesInMarkdown=new HashSet<>();
          
                      while (matcher.find()) {
                          String ref=matcher.group(0);
                          String picture=null;
                          int beginIndex=0;
                          int endIndex=0;
                          //如果是!開頭
                          if (ref.startsWith("!")) {
                              // 獲取圖片名稱
                              beginIndex=ref.lastIndexOf("/") + 1;
                              endIndex=ref.length() - 1;
                          } else if (ref.startsWith("<")) { //或者以<開頭的
                              beginIndex=ref.indexOf("/") + 1;
                              endIndex=ref.indexOf('"', beginIndex);
                          }
                          picture=ref.substring(beginIndex, endIndex);
                          //logger.info(picture);
                          // 保存圖片名稱
                          picturesInMarkdown.add(picture);
                      }
          
                      System.out.println("MarkDown中一共有:" + picturesInMarkdown.size() + "個(gè)圖片文件");
                      // 列出 Markdown 文件所在目錄中的圖片名稱
                      File directory=file.getParentFile();
                      String[] extensions={"png", "jpg", "jpeg", "bmp"}; // 圖片擴(kuò)展名
                      boolean recursive=true; // 不掃描子目錄
                      HashSet<String> picturesInDirectory=new HashSet<String>();
                      //獲取所有文件的集合
                      Collection<File> files=FileUtils.listFiles(directory, extensions, recursive);
                      System.out.println("圖片目錄下一共有:" + files.size() + "個(gè)圖片文件");
          
                      for (File picture : files) {
                          String name=picture.getName();
                          picturesInDirectory.add(name);
                      }
          
                      // 列出冗余圖片,并將其刪除
                      picturesInDirectory.removeAll(picturesInMarkdown);
                      int count=0;
                      for (String picture : picturesInDirectory) {
                          String pic=directory.getAbsolutePath() + File.separator + picDir + File.separator + picture;
          
                          System.out.println("刪除圖片:" + pic);
                          FileUtils.deleteQuietly(new File(pic));
                          count++;
                      }
                      System.out.println("操作完成,共刪除了" + count + "個(gè)圖片文件!");
                  }
          
                  scanner.close();
                  System.exit(0);
              }
          }

          使用說明

          因?yàn)槭褂肑ava編寫,使用需要安裝Java虛擬機(jī),為了方便用戶的使用,特意編寫了一個(gè)DOS下的命令行

          @echo off
          java -jar markdown-picture-cleaner-1.0.jar
          pause

          1.運(yùn)行的時(shí)候會(huì)出現(xiàn)一個(gè)窗口,需要輸入Markdown文件的路徑和文件名,這個(gè)比較麻煩,但可以將需要清理的文件直接拖到窗口中,則會(huì)自動(dòng)填充文件路徑和文件名

          2.拖到窗口中會(huì)自動(dòng)輸入路徑和文件名

          3.按下回車會(huì)讓你輸入圖片的目錄,默認(rèn)是當(dāng)前目錄下的assets,如果圖片是在這個(gè)目錄下,直接按回車即可。

          4.最后顯示清理的結(jié)果

          最后

          以上是給各位讀者提供了一種思路,大家也可以使用其它語(yǔ)言進(jìn)行編寫,比如可以直接運(yùn)行在Windows下的VC或是VB,還有圖形界面,用戶體驗(yàn)會(huì)更好一些。同時(shí)軟件本身只提供了基礎(chǔ)功能,作者提供了源代碼,懂Java的朋友可以在這個(gè)基礎(chǔ)上去進(jìn)一步完善。

          公中大家都會(huì)用到Word,但是在使用的過程中,我們或多或少會(huì)遇到一些問題。今天就挑出最典型的幾個(gè)問題,教你怎么解決它們。

          一、圖片問題

          1、插入圖片顯示不全

          大家有沒有遇到這樣的情況,在Word中插入圖片后發(fā)現(xiàn),總是顯示不完整。這樣的情況要怎么解決呢?

          解決方法:

          其實(shí)這個(gè)問題解決起來也挺簡(jiǎn)單的,只需要點(diǎn)擊段落旁邊的斜箭頭符號(hào),進(jìn)入「段落設(shè)置」中。

          再將行距設(shè)置為「單倍行距」,點(diǎn)擊「確定」。

          這樣一來,圖片完全顯示出來啦!開不開森?

          2、圖片或圖形對(duì)象無法選擇

          想要將Word中的圖片給刪除掉,但是卻發(fā)現(xiàn)無法選擇,怎么辦呢?

          解決方法:

          按「Ctrl + H」打開查找替換,點(diǎn)擊「更多」-「特殊格式」-「圖形」,把替換為設(shè)置為空,最后點(diǎn)擊「確定」,圖片就一次性清除啦!

          二、表格問題

          1、表格超出頁(yè)面范圍

          從網(wǎng)站或者Excel復(fù)制表格到Word,結(jié)果發(fā)現(xiàn)表格超出頁(yè)面范圍,部分內(nèi)容被遮擋了,怎么辦?

          解決方法:

          點(diǎn)擊表格左上角的按鈕,全選表格,右鍵選擇「自動(dòng)調(diào)整」-「根據(jù)窗口自動(dòng)調(diào)整表格」就可以啦!

          2、Word表格轉(zhuǎn)Excel變形

          Word和Excel都是辦公中經(jīng)常用到的工具,很多時(shí)候我們需要將Word中的表格給復(fù)制到Excel中,但是若復(fù)制過去變形了怎么辦呢?

          解決方法:

          首先,按「F12」鍵,將Word另存為HTML網(wǎng)頁(yè)格式。

          然后右鍵點(diǎn)擊HTML文件,選擇「打開方式」為「Excel」,你就會(huì)發(fā)現(xiàn)表格顯示正常啦,不會(huì)變形。

          三、其他問題

          1、超鏈接很難清除

          你有沒有發(fā)現(xiàn),有時(shí)候我們?cè)趙ord中輸入網(wǎng)址或郵箱,它會(huì)變成一個(gè)藍(lán)色的鏈接,若是一個(gè)個(gè)去掉的話也挺麻煩的。那怎么將它們給批量去掉呢?

          解決方法:

          首先按「Ctrl + A」選中所有文本,然后按「Ctrl + 6」或者「Ctrl + Shift + 9」鍵,就可以讓所有超鏈接消失啦!

          2、空白段落很多如何清除

          一般從網(wǎng)上復(fù)制文本到Word中,都會(huì)出現(xiàn)很多空白段落,看起來不好看,怎么將它們一次性去除呢?

          解決方法:

          按「Ctrl + H」打開替換框,查找內(nèi)容輸入2個(gè)「^p」,替換內(nèi)容輸入1個(gè),全部替換,OK。

          好啦,以上就是Word使用中的幾個(gè)技巧了,你們學(xué)會(huì)了嗎?


          主站蜘蛛池模板: 国产乱人伦精品一区二区| 亚洲av无码一区二区三区天堂| 成人中文字幕一区二区三区| 精品3d动漫视频一区在线观看| 国产一区二区电影| 亚洲福利视频一区二区| 一区二区三区精密机械| 中文字幕亚洲综合精品一区| 丰满少妇内射一区| 久久久国产一区二区三区| 一区二区三区电影网| 国产成人综合亚洲一区| 国产精品夜色一区二区三区| 人妻无码久久一区二区三区免费 | 精品少妇一区二区三区在线| 色屁屁一区二区三区视频国产| 亚洲综合一区二区| 日韩精品中文字幕无码一区| 无码人妻精品一区二区三区东京热| 国产在线精品一区二区三区不卡| 亚洲国产精品成人一区| 国产A∨国片精品一区二区| 波多野结衣一区二区三区88| 在线精品日韩一区二区三区| 国产在线视频一区二区三区| 精品国产日韩亚洲一区在线| 在线成人综合色一区| 国产在线精品一区二区| 免费一区二区三区四区五区| 国产丝袜一区二区三区在线观看 | 国产自产在线视频一区| 久久国产午夜精品一区二区三区| 精品国产不卡一区二区三区| 免费无码一区二区三区蜜桃| 久久综合九九亚洲一区| 国产一区二区久久久| 国产一区二区精品在线观看| 精品人妻少妇一区二区三区| 一区二区视频在线观看| 少妇人妻偷人精品一区二区| 成人在线观看一区|