如果你的文本塊是這樣的字符串:
text = 'Problem Category: Human Endeavors Problem Subcategory: Space ExplorationProblem Type: Failure to LaunchSoftware Version: 9.8.77.omni.3Problem Details: Issue with signal barrier chamber.'
然後
import re
names = ['Problem Category', 'Problem Subcategory', 'Problem Type', 'Software Version', 'Problem Details']
text = 'Problem Category: Human Endeavors Problem Subcategory: Space ExplorationProblem Type: Failure to LaunchSoftware Version: 9.8.77.omni.3Problem Details: Issue with signal barrier chamber.'
pat = r'({}):'.format('|'.join(names))
data = dict(zip(*[iter(re.split(pat, text, re.MULTILINE)[1:])]*2))
print(data)
產生的字典
{'Problem Category': ' Human Endeavors ',
'Problem Details': ' Issue with signal barrier chamber.',
'Problem Subcategory': ' Space Exploration',
'Problem Type': ' Failure to Launch',
'Software Version': ' 9.8.77.omni.3'}
所以,你可以指定
text = df_dict['NOTE_DETAILS'][0]
...
df_dict['NOTE_DETAILS'][0] = data
,然後你可以訪問與字典索引的子類別:
df_dict['NOTE_DETAILS'][0]['Problem_Category']
注意,雖然。深嵌套的字典/數據幀列表的字典通常是不好的設計。正如Zen of Python所說,Flat比嵌套更好。
最好的解決辦法,如果可能的話,是「追查其代碼創建文本的該塊的開發商,並要求他們將其輸出爲更多的東西可分析,例如作爲JSON「。那麼你根本不需要做任何正則表達式/分裂的欺騙手段! – Kevin 2014-10-03 14:29:36
我就是那個開發者!我正在從一個龐大的Excel文件中讀取數據。此Excel文件來自數據庫,而數據庫又來自另一個數據庫。我應該發佈我寫的代碼嗎?我認爲這將是我試圖完成的一個分心,但也許(顯然?)我錯了。 – JesseBikman 2014-10-03 14:32:11
此外,我無法以編程方式直接從數據庫訪問此數據以解決此問題。請讓我知道,如果我可以在這裏解決進一步的歧義。 – JesseBikman 2014-10-03 14:39:15