2017-07-14 13 views
1
13-JUL-17                  


Bank User      Space Occupied(GB)        
------------------------------ ------------------        
CKYC_MNSB        .004211426        
CORE_AMARNATH_ASP      8.75262451        
CORE_AMBUJA       6.80389404        
CORE_AMBUJA_ASP      10.0085449        
CORE_ANAND_MERC_ASP     18.9866333        
CORE_BALOTRA       17.8280029        
CORE_BASODA       4.55432129        
CORE_CHHAPI_ASP      11.9767456        
CORE_DHANGDHRA_ASP      13.1849976        
CORE_IDAR_ASP       13.3209229        
CORE_JANTA_HALOL_ASP     12.7955933        

Bank User      Space Occupied(GB)        
------------------------------ ------------------        
CORE_JHALOD_URBAN_ASP     9.19219971        
CORE_MANINAGAR       5.36090088        
CORE_MANINAGAR_ASP      6.31414795        
CORE_SANKHEDA       20.4329834        
CORE_SMCB_ANAND_ASP     11.3191528        
CORE_TARAPUR_ASP      8.24627686        
CORE_VUCB        .000610352        
TBA_TEMP        5.39910889        
TEST_DUNIA        4.15698242        

20 rows selected. 


TABLESPACE NAME    Free Space in GB         
------------------------------ ----------------         
TBAPROJ        33.2736816         

私は上記のテキストファイルを持っています。テキストファイルをcsvに変換して保存する方法

列を区切ってCSVファイルに保存するにはどうすればよいですか?

私はロードファイルを持っていますが、ファイルから空白を削除することは非常に困難です。

答えて

1

したい各行は大文字とアンダースコア、そしてスペース、それに小数点を持って、その後数から作られた単語のパターンに一致します。ので、このgrepがそれらを除外します:

> file_raw <- readLines('file.txt') 
> read.table(
    text=paste(
     file_raw[ 
     grep("^[A-Z_].*\\s*\\.",file_raw) 
     ], 
     collapse="\n"), 
    sep="",head=FALSE) 
         V1   V2 
1    CKYC_MNSB 0.004211426 
2  CORE_AMARNATH_ASP 8.752624510 
3   CORE_AMBUJA 6.803894040 
4  CORE_AMBUJA_ASP 10.008544900 
5 CORE_ANAND_MERC_ASP 18.986633300 
6   CORE_BALOTRA 17.828002900 
7   CORE_BASODA 4.554321290 
8  CORE_CHHAPI_ASP 11.976745600 
9  CORE_DHANGDHRA_ASP 13.184997600 
10   CORE_IDAR_ASP 13.320922900 
11 CORE_JANTA_HALOL_ASP 12.795593300 
12 CORE_JHALOD_URBAN_ASP 9.192199710 
13  CORE_MANINAGAR 5.360900880 
14 CORE_MANINAGAR_ASP 6.314147950 
15   CORE_SANKHEDA 20.432983400 
16 CORE_SMCB_ANAND_ASP 11.319152800 
17  CORE_TARAPUR_ASP 8.246276860 
18    CORE_VUCB 0.000610352 
19    TBA_TEMP 5.399108890 
20   TEST_DUNIA 4.156982420 
21    TBAPROJ 33.273681600 

注意をあなたがに最初のトークンのいずれかを期待している場合がパターンに一致しないこと、例えば、CORE_999またはlower_caseのために、あなたはパターンを調整する必要があります。しかし、正式な仕様がなければ、私たちはあなたが提供したものだけに進むことができます。

1

おそらくよりエレガントな方法があるかもしれませんが、これはトリックん:

# read raw file in lines 
file_raw <- readLines('file.txt') 

# remove whitespace 
file_trim <- trimws(file_raw,which = 'both') 

# remove empty lines 
file_trim <- file_trim[file_trim != ''] 

# sub white space with separator , 
file_csv <- gsub('\\s{2,}',',',file_trim) 

が最後にいくつかのものが--セパレータと20 rows selected.のように左が、それは簡単にフィルタリングすることができ、まだ存在しますあなたがしたい場合は、書き込みの前またはそれを読んだ後:

file_clean <- file_csv[!grepl('(-){3,}|rows selected',file_csv)] 

write.csv(file_clean,'file_cleaned.csv') 




     > read.csv('file_cleaned.csv') 
    X        x 
1 1      13-JUL-17 
2 2  Bank User,Space Occupied(GB) 
3 3    CKYC_MNSB,.004211426 
4 4  CORE_AMARNATH_ASP,8.75262451 
5 5   CORE_AMBUJA,6.80389404 
6 6  CORE_AMBUJA_ASP,10.0085449 
7 7 CORE_ANAND_MERC_ASP,18.9866333 
8 8   CORE_BALOTRA,17.8280029 
9 9   CORE_BASODA,4.55432129 
10 10  CORE_CHHAPI_ASP,11.9767456 
11 11 CORE_DHANGDHRA_ASP,13.1849976 
12 12   CORE_IDAR_ASP,13.3209229 
13 13 CORE_JANTA_HALOL_ASP,12.7955933 
14 14  Bank User,Space Occupied(GB) 
15 15 CORE_JHALOD_URBAN_ASP,9.19219971 
16 16  CORE_MANINAGAR,5.36090088 
17 17 CORE_MANINAGAR_ASP,6.31414795 
18 18   CORE_SANKHEDA,20.4329834 
19 19 CORE_SMCB_ANAND_ASP,11.3191528 
20 20  CORE_TARAPUR_ASP,8.24627686 
21 21    CORE_VUCB,.000610352 
22 22    TBA_TEMP,5.39910889 
23 23   TEST_DUNIA,4.15698242 
24 24 TABLESPACE NAME,Free Space in GB 
25 25    TBAPROJ,33.2736816 
+2

ありがとうございます。私がファイルを保存すると、バンク名と占有されたGBが1つの列に格納されます。 – Ree

+0

@Ree私の編集内容を見てください:正規表現を変更するだけで、2つ以上の連続した空白を取り除き、単語間に1つの空白を残して、それらが1つの列になるようにします – Val

関連する問題