PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   有啥文書軟體可以作到這兩點? (https://www.pcdvd.com.tw/showthread.php?t=862000)

lora 2009-07-24 09:15 PM

有啥文書軟體可以作到這兩點?
 
弄了老半天,都沒找出方法
只好在這請大家幫忙

第一個問題比較簡單
怎樣除去段與段之間的空行?

第二個就有點麻煩,想把別人的xtml資料擷取部份匯入但格式有點問題
<fasd=5 wed=red>一堆字</fasd>
變成
一堆字
<fasd=5 wed=red>一堆字</fasd>

大概有數萬筆要這樣作,所以不可能手動

有人知道如何作嗎?謝謝

u8526425 2009-07-24 09:25 PM

用"全部取代"不行嗎 ?

satai 2009-07-24 10:03 PM

第一個問題:

Shalom Txt(freeware)雖然只是一個小小的文字編輯器,可是他卻有獨特的功能:「刪除空白行」!

http://azo-freeware.blogspot.com/20...lom-txt-12.html

kiten 2009-07-24 10:11 PM

引用:
作者lora
弄了老半天,都沒找出方法
只好在這請大家幫忙

第一個問題比較簡單
怎樣除去段與段之間的空行?

第二個就有點麻煩,想把別人的xtml資料擷取部份匯入但格式有點問題
<fasd=5 wed=red>一堆字</fasd>
變成
一堆字
<fasd=5 wed=red>一堆字</fasd>
大概有數萬筆要這樣作,所以不可能手動
有人知道如何作嗎?謝謝


請問您的空行有沒有Space,Tab等字元,如果都沒有任何字元的話
針對你的問題我解法如下,首先請先將檔案上傳至Unix like(如Linux)主機上可以存取的目錄(如/tmp),假定檔名為a.txt,輸出檔名為b.txt,所有檔案及工作目錄假定為/tmp
問題一解答
$gawk 'NF>0 {print }' a.txt > b.txt


問題二我個人的智慧也覺得解起來有麻煩,我獻醜一個小程式
$vi foo.py
f1為程式第一列
-----------------------
f1 = open('a.txt','r')
s = f1.read()
f1.close()
t = ""

flagSkip = False
for i in range(len(s)):
if s[i]=="<":
flagSkip = True
if s[i]==">":
flagSkip = False
continue
if flagSkip:
continue
t+=s[i]
print t
-----------------------
print t為程式最後一列

現在終於可以擺平第二題了 :stupefy:
$ python foo.py > b.txt

b4283 2009-07-24 11:41 PM

第一個問題可以用 regexp + 任何一個好用的 editor 解決
(順便把 regexp 學了,對工作很有幫助)

第二個問題不是很懂
是說原本的資料是

<foo>bar</foo>

你要把它變成

bar
<foo>bar</foo>

是嗎?

sazabijiang 2009-07-25 01:07 AM

第一個問題可以用word的取代功能. 把 ^p^p 取代為 ^p 即可.

第二個問題看不懂. 重新匯入資料可嗎?

shinnlu 2009-07-25 02:30 AM

兩個問題都可以用正規表示式來解決
但第一個用UltraEdit 之類的軟體比較簡單
用搜尋&取代的功能:搜尋 "^p^p",取代成 "^p"

第二個問題用正規表示式
搜尋: (<.*?>(.*?)</.*?>)
取代: $2\r\n$1

-----測試字串-----
<fasd=5 wed=red>一堆字</fasd><qwer=4 wed=pink>二堆字</fasd>
<abcd=3 wed=blue>三堆字</fasd>
-----取代結果-----
一堆字
<fasd=5 wed=red>一堆字</fasd>二堆字
<qwer=4 wed=pink>二堆字</fasd>
三堆字
<abcd=3 wed=blue>三堆字</fasd>
------------------

實際的語法在不同的工具裡會有一點差異.

kiten 2009-07-25 01:06 PM

引用:
作者shinnlu
兩個問題都可以用正規表示式來解決
但第一個用UltraEdit 之類的軟體比較簡單
用搜尋&取代的功能:搜尋 "^p^p",取代成 "^p"

第二個問題用正規表示式
搜尋: (<.*?>(.*?)</.*?>)
取代: $2\r\n$1

-----測試字串-----
<fasd=5 wed=red>一堆字</fasd><qwer=4 wed=pink>二堆字</fasd>
<abcd=3 wed=blue>三堆字</fasd>
-----取代結果-----
一堆字
<fasd=5 wed=red>一堆字</fasd>二堆字
<qwer=4 wed=pink>二堆字</fasd>
三堆字
<abcd=3 wed=blue>三堆字</fasd>
------------------

實際的語法在不同的工具裡會有一點差異.

樓主解法二我測試過確實可行,解得太漂亮了
正規表示法這方面我學得確實不到家 :ase

wangks 2009-07-27 01:43 AM

正規表示法
在WinBase下有類似的技術嗎?

f750502 2009-07-27 03:10 AM

好強唷@@

沒想到取代這功能可以這樣使用...


所有的時間均為GMT +8。 現在的時間是03:30 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。