我正在嘗試從我正在讀入 Python 的文本檔案創建一個串列。文本檔案在整個檔案中包含一堆方括號[這里有一些文本]。我要做的是首先計算我有多少方括號配對 [],然后將其中的任何文本添加到串列中。
這是我嘗試使用括號的文本檔案的超級簡化版本:
"[name] is going to the store! It's going to be at [place] on [day-of-the-week]."
這是我所擁有的:
bracket_counter = 0
file_name = "example.txt"
readFile = open(file_name)
text_lines = readFile.readlines()
for line in text_lines:
val = line.split('[', 1)[1].split(']')[0]
print(val)
if line has [ and ]:
bracket_counter = 1
我對 Python 非常陌生。我不知道我是否應該為此使用正則運算式,或者這是否過于復雜。
謝謝你的幫助!
uj5u.com熱心網友回復:
您當然可以為此使用正則運算式。在下面的示例中,您將提取方括號內的所有內容并將它們存盤在變數中words。
words = re.findall(r'\[([^\]] )\]', line)
不要忘記import re在程式的頂部。
正則運算式的解釋:
\[并\]匹配方括號。由于這些也用于正則運算式,因此您必須使用反斜杠對其進行轉義(...)是一個捕獲組,普通括號內的所有正則運算式部分都將作為結果回傳(例如在串列中words)[^\]]將匹配除]
把它們放在一起:
此正則運算式查找左方括號,然后匹配所有字符,直到出現右方括號并回傳串列中的匹配項。
uj5u.com熱心網友回復:
如果有像我這樣孤獨的靈魂想知道如何在不使用正則運算式的情況下做到這一點,我想這也可能是一個解決方案:
results = []
with open("example.txt") as read:
for line in read:
start = None; end = None
for i,v in enumerate(line):
if v == "[": start = i
if v == "]": end = i
if start is not None and end is not None:
results.append(line[start 1:end])
start = None; end = None
print(results)
結果:
['name', 'place', 'day-of-the-week']
uj5u.com熱心網友回復:
Python 沒有has關鍵字。您可能正在尋找類似的東西:
('[' in line) or (']' in line)
如果該行包含 [ 或 ],它將評估為 True。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478278.html
