簡體   English   中英

解析所有空白和語法

[英]Parse all whitespace and grammar

我想創建一個Python解析器來解析文件中的空白和語法。 我想要做的是讀取一個文件,並將每個空格,標點符號和單詞放入列表中自己的元素中。 到目前為止,我有以下內容用於拆分空白:

with open(fname, 'r') as f:
  words = re.split("(\s+)", f.read())

words保存文件內容的列表,每個空格都是其自己的元素。 但是,我在解析標點符號時遇到了麻煩,因為list元素可以包含元素中帶有引號的"Hello"類的項目。 而是,我希望它看起來像這樣:

list = ['"', 'Hello', '"', '@', 'World'] 

相對於:

list = ['"Hello"', '@World']

如果有人可以幫助我,那就太好了!

您可以使用re.findall而不是拆分。

import re

string = '"hello" @world'
L = re.findall(r'(\w+|[@"])', string)
print(L)
#['"', 'hello', '"', '@', 'world'] 

我以為edi_allen擁有它,但是后來發現空白並沒有使用findall進入列表。

with open(fname, 'r') as f:
  words = re.split('(["\'@&,;:\(\)\s+\*\?\.]|\w+)', f.read())

#because each list element is separated from the next by an empty string:
while '' in words:
    words.remove('')    
print (words)           

給定一個具有以下內容的文本文件:

布萊恩:他們會對我做什么?

本:哦,您可能會被釘十字架。

布萊恩:被釘十字架?

本:是的,初犯。

返回的列表是:

>>>  ['BRIAN', ':', ' ', 'What', ' ', 'will', ' ', 'they', ' ', 
'do', ' ', 'to', ' ', 'me', '?', '\n', 'BEN', ':', ' ', 'Oh', ',', ' ',
'you', "'", 'll', ' ', 'probably', ' ', 'get', ' ', 'away', ' ',
'with', ' ', 'crucifixion', '.', '\n', 'BRIAN', ':', ' ',
'Crucifixion', '?', '!', '\n', 'BEN', ':', ' ', 'Yeah', ',', ' ',
'first', ' ', 'offence', '.', ' ', '\n']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM