如何解析文本

已發表: 2022-10-15
如何解析文本

如果您學過一些計算機編程語言,您可能聽說過解析文本這個術語。 這用於簡化文件的複雜數據值。 本文幫助您了解如何使用該語言解析文本。 除此之外,如果您在解析文本 x 時遇到錯誤,您將在文章中了解如何修復解析錯誤。

如何解析文本

內容

  • 如何解析文本
  • 什麼是解析文本?
  • NLP 或自然語言處理
  • 什麼是解析文本?
  • 解析文本的原因是什麼?
  • 方法一:通過DataFrame類
  • 方法二:通過詞分詞
  • 方法三:通過DocParser類
  • 方法四:通過解析文本工具
  • 方法 5:通過 TextFieldParser (Visual Basic)
  • 專業提示:如何通過 MS Excel 解析文本
  • 如何修復解析錯誤

如何解析文本

在本文中,我們展示了通過各種方式解析文本的完整指南,並簡要介紹了解析文本。

什麼是解析文本?

在深入學習使用任何代碼解析文本的概念之前。 了解語言和編碼的基礎知識很重要。

NLP 或自然語言處理

為了解析文本,使用自然語言處理或 NLP,它是人工智能領域的一個子領域。 Python 語言是屬於該類別的語言之一,用於解析文本。

NLP 代碼使計算機能夠理解和處理人類語言,以使其適用於各種應用程序。 要將 ML 或機器學習技術應用於語言,必須將非結構化文本數據轉換為結構化表格數據。 為了完成解析活動,Python 語言用於更改程序代碼。

什麼是解析文本?

解析文本只是意味著將數據從一種格式轉換為另一種格式。 保存文件的格式應解析或轉換為不同格式的文件,以使用戶能夠在各種應用程序中使用它。

  • 換句話說,該過程意味著分析字符串或文本,並通過更改文件的格式將其轉換為邏輯組件。
  • 利用 Python 語言的一些規則來完成這個常見的編程任務。 在解析文本時,給定的一系列文本被分解成更小的組件。

解析文本的原因是什麼?

本節給出了必須解析文本的原因,這是了解如何解析文本之前的先決知識。

  • 所有計算機化數據的格式都不相同,並且可能會根據不同的應用程序而有所不同。
  • 數據格式因應用程序而異,不兼容的代碼會導致此錯誤。
  • 沒有單獨的通用計算機程序來選擇所有數據格式的數據。

方法一:通過DataFrame類

Python 語言的 DataFrame 類具有解析文本所需的所有功能。 這個內置庫包含將任何格式的數據解析為另一種格式的必要代碼。

DataFrame類簡介

DataFrame 類是一種功能豐富的數據結構,用作數據分析工具。 這是一款功能強大的數據分析工具,可用於輕鬆分析數據。

  • 代碼被讀入 pandas DataFrame 以使用 Python 語言執行分析。
  • 該類附帶了 Python 數據分析師使用的 pandas 提供的許多包。
  • 此類的特性是 NumPy 庫的抽象,即函數的內部功能對用戶隱藏的代碼。 NumPy 庫是一個 Python 庫,其中包含用於處理數組的命令和函數。
  • DataFrame 類可用於渲染具有多個行和列索引的二維數組。 這些索引有助於存儲多維數據,因此被稱為 MultiIndex。 必須更改這些才能知道如何修復解析錯誤。

Python 語言的 pandas 有助於以最完美的方式執行 SQL 或數據庫樣式的操作,以避免在解析文本 x 時出錯。 它還包含一些 IO 工具,有助於分析 CSV、MS Excel、JSON、HDF5 和其他數據格式的文件。

另請閱讀:修復嘗試代理請求時發生的錯誤

使用 DataFrame 類解析文本的過程

要了解如何解析文本,您可以使用本節中給出的 DataFrame 類的標準流程。

  • 破譯輸入數據的數據格式。
  • 決定CSV逗號分隔值等數據的輸出數據。
  • 在代碼上寫一個原始數據類型,如列表或字典。

注意:在空的 DataFrame 上編寫代碼可能既乏味又復雜。 pandas 允許從這些數據類型創建 DataFrame 類的數據。 因此,原始數據類型中的數據可以很容易地解析為所需的數據格式。

  • 使用數據分析工具 pandas DataFrame 分析數據,並打印結果。

選項一:標準格式

此處解釋了使用特定數據格式(例如 CSV)格式化任何文件的標準方法。

  • 將帶有數據值的文件保存在您的 PC 上。 例如,您可以將文件命名為data.txt
  • 在 pandas 中以特定名稱導入文件並將數據導入另一個變量。 例如,該語言的 pandas 被導入到給定代碼中的名稱pd中。
  • 導入應該有一個完整的代碼,其中包含輸入文件的名稱、函數和輸入文件格式的詳細信息。

注意:這裡,名為res的變量用於使用pd中導入的 pandas 執行文件data.txt中數據的讀取功能。 輸入文本的數據格式以CSV格式指定。

  • 調用命名的文件類型並分析打印結果上的解析文本。 例如,命令行執行後的命令res將有助於打印解析的文本。

下面給出了上述過程的示例代碼,將有助於理解如何解析文本。

 將熊貓導入為 pd
res = pd.read_csv('data.txt')
資源

在這種情況下,如果您在文件data.txt中輸入數據值,例如[1,2,3] ,它將被解析並顯示為1 2 3

選項二:字符串方法

如果提供給代碼的文本僅包含字符串或字母字符,則可以使用字符串中的特殊字符(如逗號、空格等)來分隔和解析文本。 該過程類似於常見的內部字符串操作。 要查找如何修復解析錯誤,您必須遵循使用此選項解析文本的過程,如下所述。

  • 數據是從字符串中提取的,所有分隔文本的特殊字符都會被記錄下來。

例如,在下面給出的代碼中,識別了字符串my_string中的特殊字符,即 ' ' 和 ' : '。 這個過程必須小心完成,以避免在解析文本 x 時出錯。

  • 字符串中的文本根據特殊字符的值和位置單獨拆分。

例如,根據使用 split 命令識別的特殊字符,將字符串拆分為文本數據值。

  • 字符串的數據值作為解析文本單獨打印。 這裡, print語句用於打印文本的解析數據值。

下面給出了上述過程的示例代碼。

 my_string = '名稱:技術,計算機'
sfinal = [name.strip() for name in my_string.split(':')[1].split(',')]
print(“名稱:{}”.format(sfinal))

在這種情況下,解析字符串的結果將如下所示。

 名稱:['技術','計算機']

為了獲得更好的清晰度並知道如何在使用字符串文本時解析文本,使用了for循環並將代碼修改如下。

 my_string = '名稱:技術,計算機'
s1 = my_string.split(':')
s2 = s1[1]
s3 = s2.split(',')
s4 = [name.strip() for name in s3]
對於 idx,枚舉中的項目([s1,s2,s3,s4]):
print(“步驟 {}: {}”.format(idx, item)) 

蟒蛇代碼

每個步驟的解析文本結果如下所示。 您可以注意到,在步驟 0 中,字符串基於特殊字符:進行分隔,文本數據值在進一步的步驟中基於字符進行分隔。

 第 0 步:['名稱','技術,計算機']
第 1 步:技術、計算機
第2步:['技術','計算機']
第 3 步:['技術','計算機']

選項三:解析複雜文件

在大多數情況下,需要解析的文件數據包含不同的數據類型和數據值。 在這種情況下,使用前面解釋的方法可能難以解析文件。

解析文件中復雜數據的特點是使數據值以表格形式顯示。

  • 值的標題或元數據打印在文件頂部,
  • 變量和字段以表格形式打印在輸出中,並且
  • 數據值形成一個複合鍵。

在深入學習如何用這種方法解析文本之前,有必要學習一些基本概念。 數據值的解析是基於正則表達式或 Regex 完成的。

正則表達式模式

要知道如何修復解析錯誤,您必須確保表達式中的正則表達式模式是正確的。 解析字符串數據值的代碼將涉及本節下面列出的常見正則表達式模式。

  • '\d' :匹配字符串中的十進制數字,
  • '\s' :匹配空白字符,
  • '\w' :匹配字母數字字符,
  • '+''*' : 通過匹配字符串中的一個或多個字符來執行貪婪匹配,
  • 'a-z' :匹配文本數據值中的小寫組,
  • 'A-Z''a-z' :匹配字符串的大小寫組,並且
  • '0-9' :匹配數值。

常用表達

正則表達式模塊是 Python 語言中 pandas 包的主要部分,錯誤的 re 可能導致解析文本 x 時出錯。 它是一種嵌入在 Python 中的微型語言,用於在表達式中查找字符串模式。 正則表達式或正則表達式是具有特殊語法的字符串。 它允許用戶根據字符串中的值匹配其他字符串中的模式。

Regex 是根據數據類型和字符串中表達式的要求創建的,例如'String = (.*)\n 。 正則表達式在每個表達式的模式之前使用。 下面列出了正則表達式中使用的符號,有助於了解如何解析文本。

  • . :從數據中檢索任何字符,
  • * :使用前一個表達式中的零個或多個數據,
  • (.*) :將正則表達式的一部分分組在括號內,
  • \n :在代碼行尾創建一個換行符,
  • \d :在 0 到 9 範圍內創建一個短整數值,
  • + :使用前一個表達式中的一個或多個數據,並且
  • | :創建一個邏輯語句; 用於表達式。

正則表達式對象

RegexObject 是編譯函數的返回值,如果表達式與匹配值匹配,則用於返回 MatchObject。

1. 匹配對象

由於 MatchObject 的布爾值始終為 True,您可以使用if語句來識別對像中的正匹配。 在使用if語句的情況下,索引引用的組用於查找表達式中對象的匹配。

  • group()返回一個或多個匹配子組,
  • group(0)返回整個匹配,
  • group(1)返回第一個帶括號的子組,並且
  • 在引用多個組時,我們應該使用 python 特定的擴展。 此擴展名用於指定必須在其中找到匹配項的組的名稱。 括號內的組中提供了特定的擴展名。 例如,表達式(?P<group1>regex1)將引用名稱為group1的特定組,並檢查正則表達式regex1中的匹配項。 要了解如何修復解析錯誤,您必須檢查組是否正確指向。

2. MatchObject的方法

在尋找如何解析文本時,重要的是要知道 MatchObject 有兩種基本方法,如下所示。 如果在指定的表達式中找到 MatchObject,它將返回其實例,否則,它將返回 None。

  • match(string)方法用於在正則表達式的開頭查找字符串的匹配項,並且
  • search(string)方法用於掃描字符串以查找正則表達式中匹配的位置。

正則表達式函數

正則表達式函數是用於執行用戶從獲取的數據值集中指定的特定函數的代碼行。

注意:為了編寫函數,原始字符串用於正則表達式以避免解析文本 x 時出錯。 這是通過在表達式中的每個模式之前添加下標r來完成的。

下面解釋表達式中使用的常用函數。

1. re.findall()

如果找到匹配項,則此函數返回字符串中的所有模式,如果未找到匹配項,則返回一個空列表。 例如,函數string = re.findall('[aeiou]', regex_filename)用於查找文件名中出現的元音。

2. re.split()

此函數用於在找到與指定字符(例如空格)匹配的情況下拆分字符串。 如果未找到匹配項,則返回一個空字符串。

3. re.sub()

該函數用給定的替換變量的內容替換匹配的文本。 與其他函數相反,如果沒有找到模式,則返回原始字符串。

4. re.search()

幫助學習如何解析文本的基本功能之一是搜索功能。 它有助於在字符串中搜索模式並返回匹配對象。 如果搜索未能識別匹配項,則不返回任何值。

5.重新編譯(模式)

該函數用於將正則表達式模式編譯為 RegexObject,這在前面已經討論過了。

其他需求

列出的要求是高級程序員在數據分析中使用的附加功能。

  • 為了可視化正則表達式,使用了regexper ,並且
  • 為了測試正則表達式,使用了regex101

另請閱讀:如何在 Windows 10 上安裝 NumPy

解析文本的過程

在此復雜選項中解析文本的方法如下所述。

  • 最重要的一步是通過讀取文件的內容來理解輸入格式。 例如, with openread()函數用於打開和讀取名為sample的文件的內容。 示例文件包含文件file.txt中的內容; 要了解如何修復解析錯誤,必須完整讀取文件。
  • 打印文件的內容以手動分析數據以找出值的元數據。 這裡, print()函數用於打印示例文件的內容。
  • 解析文本所需的數據包被導入到代碼中,並為類命名以進行進一步編碼。 在這裡,正則表達式pandas被導入。
  • 代碼所需的正則表達式在文件中定義,包括正則表達式模式和正則表達式函數。 這允許文本對像或語料庫採用代碼進行數據分析。
  • 要了解如何解析文本,您可以參考此處給出的示例代碼。 compile()函數用於從文件filename的組stringname1編譯字符串。 命令ief_parse_line(line)使用了在正則表達式中檢查匹配的函數,
  • 代碼的行解析器是使用def_parse_file(filepath)編寫的,其中定義的函數檢查指定函數中的所有正則表達式匹配。 在這裡,regex search()方法在文件filename中搜索鍵rx並返回第一個匹配的正則表達式的鍵和匹配項。 該步驟的任何問題都可能導致解析文本 x 時出錯。
  • 下一步是使用文件解析器函數編寫文件解析器,即def_parse_file(filepath) 。 創建一個空列表來收集代碼的數據,如data = [] ,通過match = _parse_line(line)在每一行檢查匹配,並根據數據類型返回確切的值數據。
  • 要提取表格的數字和值,使用命令行.strip().split(',')row{}命令用於創建包含數據行的字典。 data.append(row)命令用於理解數據並將其解析為表格格式。

命令data = pd.DataFrame(data)用於從 dict 值創建 pandas DataFrame。 或者,您可以將以下命令用於如下所述的相應目的。

  • data.set_index(['string', 'integer'], inplace=True)設置表的索引。
  • data = data.groupby(level=data.index.names).first()合併和刪除 nans。
  • data = data.apply(pd.to_numeric, errors='ignore')將分數從浮點數升級為整數值。

了解如何解析文本的最後一步是使用if 語句測試解析器,方法是將值分配給變量data並使用print(data)命令打印它。

此處給出了上述解釋的示例代碼。

 以 open('file.txt') 作為示例:
sample_contents = sample.read()
打印(樣本內容)
重新進口
將熊貓導入為 pd
rx_filename = {
'string1': re.compile(r 'string = (?<P<stringname1>,*)\n'),
}
ief_parse_line(行):
對於 rx_filename.items() 中的密鑰 rx:
匹配 = rx.search(行)
如果匹配:
返回鍵,匹配
返回無,無
def parse_file(文件路徑):
數據 = []
使用 open(filepath, 'r') 作為 file_object:
line = file_object.readline()
而線:
鍵,匹配 = _parse_line(line)
如果鍵 == 'string1':
字符串 = match.group('string1')
整數 = int(string1)
value_type = match.group('string1')
line = file_object.readline()
而 line.strip():
數字,值 = line.strip().split(',')
值 = 值.strip()
行 = {
“數據1”:字符串1,
'Data2':數字,
值類型:值
}
data.append(行)
line = file_object.readline()
line = file_object.readline()
數據 = pd.DataFrame(數據)
返回數據
如果_ _name_ _ = = '_ _main_ _':
文件路徑 = 'sample.txt'
數據 = 解析(文件路徑)
打印(數據) 

python代碼正則表達式函數

方法二:通過詞分詞

根據某些規則將文本或語料庫轉換為標記或更小片段的過程稱為標記化。 要了解如何修復解析錯誤,分析代碼中的單詞標記化命令很重要。 與正則表達式類似,可以在此方法中創建自己的規則,它有助於文本預處理任務,例如映射詞性。 此外,這種方法還執行諸如查找和匹配常用詞、清理文本以及為高級文本分析技術(如情感分析)準備數據等活動。 如果分詞不當,可能會出現解析文本 x 的錯誤。

Ntlk 庫

該過程借助稱為 nltk 的流行語言工具包庫的幫助,該庫具有用於執行許多 NLP 作業的豐富函數集。 這些可以通過 Pip 或 Pip 安裝包下載。 要了解如何解析文本,您可以使用默認包含該庫的 Anaconda 發行版的基本包。

標記化形式

這種方法的常見形式是詞分詞和句子分詞。 由於單詞級別的標記,前者只打印一個單詞一次,而後者在句子級別打印單詞。

解析文本的過程

  • 導入 ntlk 工具包庫,並從庫中導入標記化表格。
  • 給出了一個字符串,並給出了執行標記化的命令。
  • 打印字符串時,輸出將是computer is the word。
  • 在單詞標記化或word_tokenize()的情況下,句子中的每個單詞都單獨打印在''中,並用逗號分隔。 該命令的輸出將是'computer'、'is'、'the'、'word'、'.'
  • 在句子標記化或sent_tokenize()的情況下,單個句子放置在''內,並且允許單詞重複。 該命令的輸出將是“computer is the word”。

此處給出了解釋上述標記化步驟的代碼。

 導入 nltk
從 nltk.tokenize 導入 sent_tokenize,word_tokenize
string = “計算機就是這個詞。”
打印(字符串)
打印(word_tokenize(字符串))
打印(sent_tokenize(字符串)) 

python代碼nltk

另請閱讀:如何修復 javascript:void(0) 錯誤

方法三:通過DocParser類

與 DataFrame Class 類似,可以使用 Class DocParser 來解析代碼中的文本。 該類允許您使用文件路徑調用 parse 函數。

解析文本的過程

要了解如何使用 DocParser 類解析文本,請按照以下說明進行操作。

  • get_format(filename)函數用於提取文件擴展名,將其返回給函數的集合變量,並將其傳遞給下一個函數。 例如, p1 = get_format(filename)將提取 filename 的文件擴展,將其設置為變量p1 ,並將其傳遞給下一個函數。
  • 使用if-elif-else語句和函數構建具有其他函數的邏輯結構。
  • 如果文件擴展名有效且結構符合邏輯,則使用get_parser函數解析文件路徑中的數據,並將字符串對象返回給用戶。

注意:要知道如何修復解析錯誤,必須正確實現此功能。

  • 數據值的解析是通過文件的文件擴展名完成的。 該類的具體實現是parse_txtparse_docx ,用於從給定文件類型的部分生成字符串對象。
  • 可以對其他可讀擴展名的文件進行解析,例如parse_pdfparse_htmlparse_pptx
  • 可以使用 import 語句將數據值和接口導入應用程序並實例化 DocParser 對象。 這可以通過解析 Python 語言中的文件來完成,例如parse_file.py 。 此操作必須小心完成,以避免在解析文本 x 時出錯。

方法四:通過解析文本工具

Parse text 工具用於從變量中提取特定數據並將它們映射到其他變量。 這獨立於任務中使用的任何其他工具,並且 BPA 平台工具用於使用和輸出變量。 使用此處提供的鏈接在線訪問 Parse Text Tool 並使用前面給出的有關如何解析文本的答案。

解析文本工具

方法 5:通過 TextFieldParser (Visual Basic)

TextFieldParser 利用對象來解析和處理非常大的結構化和分隔文件。 這種方法可以使用文本的寬度和列,例如日誌文件或遺留數據庫信息。 解析方法類似於在文本文件上迭代代碼,主要用於提取文本字段,類似於字符串操作方法。 這樣做是為了使用定義的分隔符(例如逗號或製表符空格)對分隔的字符串和各種寬度的字段進行標記。

解析文本的函數

以下函數可用於解析此方法中的文本。

  • 要定義分隔符,使用SetDelimiters 。 例如,命令testReader.SetDelimiters (vbTab)用於將製表符空間設置為分隔符。
  • 要將字段寬度設置為正整數值到文本文件的固定字段寬度,可以使用testReader.SetFieldWidths (integer)命令。
  • 要測試文本的字段類型,可以使用以下命令testReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth

查找 MatchObject 的方法

有兩種基本方法可以在代碼或解析後的文本中找到 MatchObject。

  • 第一種方法是定義格式並使用ReadFields方法循環文件。 此方法將有助於處理代碼的每一行。
  • PeekChars方法用於在讀取之前單獨檢查每個字段,定義多種格式並做出反應。

在任何一種情況下,如果在執行解析或查找如何解析文本時字段與指定格式不匹配,則會返回MalformedLineException異常。

專業提示:如何通過 MS Excel 解析文本

作為解析文本的最後且簡單的方法,您可以使用 MS Excel 應用程序作為解析器來創建製表符分隔和逗號分隔的文件。 這將有助於與您的解析結果進行交叉檢查,並有助於找到如何修復解析錯誤。

1. 選擇源文件中的數據值,同時按Ctrl+C鍵複製文件。

2. 使用 Windows 搜索欄打開Excel應用程序。

打開 Microsoft Excel 應用程序

3. 單擊A1單元格並同時按Ctrl + V 鍵粘貼複製的文本。

4. 選擇A1單元格,導航到數據選項卡,然後單擊數據工具部分中的文本到列選項。

導航到數據選項卡並單擊文本到列選項

5A。 如果使用逗號製表符空格作為分隔符,請選擇Delimited選項,然後單擊NextFinish按鈕。

如果使用逗號或製表符空格作為分隔符,請選擇 Delimited 選項,然後單擊 Next 和 Finish 按鈕

5B。 選擇固定寬度選項,為分隔符指定一個值,然後單擊下一步完成按鈕。

選擇固定寬度選項為分隔符指定一個值,然後單擊下一步和完成按鈕

另請閱讀:如何修復移動 Excel 列錯誤

如何修復解析錯誤

Android 設備上可能會出現解析文本 x 的錯誤,因為解析錯誤:解析包時出現問題。 這通常發生在應用無法從 Google Play 商店安裝或運行第三方應用時。

如果字符向量列表被循環並且其他函數形成用於計算數據值的線性模型,則可能會出現錯誤文本 x。 錯誤消息是解析中的錯誤(文本 = x,keep.source = FALSE):<文本>:2.0:輸入 1 的意外結束:OffenceAgainst ~ ^。

您可以閱讀有關如何在 Android 上修復解析錯誤的文章,以了解修復錯誤的原因和方法。

重置智能手機。修復 Windows 10 中輸入 $ 的解析錯誤

除了指南中的解決方案外,您還可以嘗試以下修復。

  • 重新下載.apk文件或恢復文件名。
  • 如果您具有專家級編程技能,則恢復Androidmanifest.xml文件中的更改。

推薦的:

  • 如何刪除別人的 Facebook 帳戶
  • 成為道德黑客所需的 10 大技能
  • 共享代碼和文本的 21 種最佳 Pastebin 替代方案
  • 修復命令失敗並出現錯誤代碼 1 Python Egg 信息

這篇文章有助於教授如何解析文本並學習如何修復解析錯誤。 讓我們知道哪種方法有助於修復解析文本 x 中的錯誤以及首選哪種解析方法。 請在下面的評論部分分享您的建議和疑問。