[問題] 讀取會議文件遇到問題
我打算分析100多個會議文件,
範例如下:https://tinyurl.com/yalydvd8
但在分析之前,我想先將文件轉成資料儲存,
資料中的每一行,第一個數值是發言者,第二個數值是發言者的發言內容。
例如:["張三","我今天早上吃了一碗滷肉飯,超好吃的。"]
我目前的進度如下:
Name = []
sentence = []
file = open('會議文件','r')
for line in file:
if line.find(':') != -1:
tokens = line.split(":")
Name.append(tokens[0])
else:
sentence.append(line + " ")
我現在想不通該怎麼樣把得到的發言者姓名和內容放在一起,
然後再繼續找下一個發言者和發言內容。
還請各位高手幫忙解惑,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 168.150.122.93
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1548821321.A.461.html
※ 編輯: TZULIU (168.150.122.93), 01/30/2019 12:17:39
※ 編輯: TZULIU (168.150.122.93), 01/30/2019 12:19:54
推
01/30 12:20,
6年前
, 1F
01/30 12:20, 1F
推
01/30 13:27,
6年前
, 2F
01/30 13:27, 2F
→
01/30 13:28,
6年前
, 3F
01/30 13:28, 3F
→
01/30 13:28,
6年前
, 4F
01/30 13:28, 4F
兩位高手的建議因為文件結構應該無法運行,把冒號當分隔符取出發言者沒問題,
但是發言內容可能會有很多行。假設我資料的第一行是 「小明:」,然後接下來的
八行都是小明發言的內容,然後再下一行(第十行)是「小華:」,然後接下來的五行
都是小華的發言內容,我的問題是,我應該怎樣讓電腦知道,在讀完第九行之後,
創建一個list如["小明","八行內容"],然後再讀取剩下的六行,然後在最後創立一個
list為["小華","五行內容"]。謝謝!
※ 編輯: TZULIU (168.150.122.93), 01/30/2019 14:21:08
推
01/30 15:08,
6年前
, 5F
01/30 15:08, 5F
推
01/30 19:01,
6年前
, 6F
01/30 19:01, 6F
推
01/30 19:03,
6年前
, 7F
01/30 19:03, 7F
→
01/30 19:04,
6年前
, 8F
01/30 19:04, 8F
推
01/31 00:48,
6年前
, 9F
01/31 00:48, 9F
→
01/31 01:29,
6年前
, 10F
01/31 01:29, 10F
推
01/31 05:18,
6年前
, 11F
01/31 05:18, 11F
→
01/31 05:19,
6年前
, 12F
01/31 05:19, 12F
→
01/31 05:21,
6年前
, 13F
01/31 05:21, 13F
→
01/31 05:24,
6年前
, 14F
01/31 05:24, 14F
→
01/31 05:28,
6年前
, 15F
01/31 05:28, 15F
→
01/31 05:29,
6年前
, 16F
01/31 05:29, 16F
→
01/31 05:37,
6年前
, 17F
01/31 05:37, 17F
推
01/31 09:50,
6年前
, 18F
01/31 09:50, 18F
感謝各位先進的幫忙,我昨晚和今天早上又想了一下加問了一下朋友,
以下是我現在的作法(有點笨但是對於我這種非高手比較容易理解):
##先讀取文件的每一行並建立一個list
##同時也創建一個index
file = open('文件', 'r')
All_lines = []
Names = []
length = 0
#Read all lines in the text file
for line in file:
if "Column" not in line:
line = re.sub(r"(\d+\.?)", "", line)
line = line.strip()
if not line:
continue
else:
All_lines.append(line.strip())
length += 1
else:
continue
##以新建的list作為新文件並且抓取發言者及其發言並結何為一sub list
for i in range(length):
temp = []
if All_lines[i].find(':') != -1:
#Split the name
#Let's split the line into an array called "tokens" using the ":" as a separator:
tokens = All_lines[i].split(":")
#and let's extract the data:
temp.append(tokens[0])
j = i + 1
while j < length and All_lines[j].find(':') == -1:
#All_lines[j] = re.sub(r" ", "", All_lines[j])
temp.append(All_lines[j].strip())
j += 1
Names.append(temp)
還請各位高手賜教,謝謝!
※ 編輯: TZULIU (168.150.122.93), 01/31/2019 13:45:20
推
01/31 21:12,
6年前
, 19F
01/31 21:12, 19F
推
02/01 11:02,
6年前
, 20F
02/01 11:02, 20F
→
02/01 11:02,
6年前
, 21F
02/01 11:02, 21F
推
02/01 11:04,
6年前
, 22F
02/01 11:04, 22F
→
02/01 11:05,
6年前
, 23F
02/01 11:05, 23F
→
02/01 11:05,
6年前
, 24F
02/01 11:05, 24F
Python 近期熱門文章
PTT數位生活區 即時熱門文章