簡體   English   中英

使用Python或Excel格式化文本文件

[英]Format text file using Python or Excel

我有一個文本文件,看起來像:

ROOT: are   DOBJ: money DOBJ: deal  
DOBJ: products  ROOT: count DOBJ: me    DOBJ: deal  
POBJ: amp   ROOT: dads. POBJ: diapers   
ROOT: get   DOBJ: ecard DOBJ: it    
ROOT: hutang    

每個單詞都用制表符分隔。 該文件大約有50,000行。 我想格式化文件,使每一行都以ROOT開頭,然后是DOBJ,然后是POBJ。 每行只有一個ROOT,並且DOBJ / POBJ的數量未知,范圍為0-5。 我試圖將文件導入Excel工作表並嘗試進行HLOOKUP,但是我沒有得到想要的東西。 我想在VBA中編寫以下邏輯(我以前從未使用過VBA):

Dim sh As Worksheet
Dim rw As Range
Dim RowCount As Integer

Set sh = ActiveSheet
For Each rw In sh.Rows
    if cellnumber(ROOT) != A
        swap content(A), content of cell containing ROOT

有人可以幫助我處理此代碼,還是告訴我是否有使用Python或Excel的更好方法?

在VBA中,這應該可以幫助您入門。

Sub test()
Dim InputString As String
Dim RowToPerform As Long
Dim TextPath As Variant
Dim ArrayString() As String
Dim CounterArray As Long

TextPath = Application.GetOpenFilename("Txt Files,*.txt", Title:="Select Txt")
Open TextPath For Input As #1
    Do Until EOF(1)
        Line Input #1, InputString
        RowToPerform = Cells(Rows.Count, 1).End(xlUp).Row + 1
        'ArrayString = Split(InputString, "|")
        ArrayString = Split(InputString, "ROOT:")
        Cells(RowToPerform, 1).Value = "ROOT: "
        Cells(RowToPerform - 1, 1).Value = Cells(RowToPerform - 1, 1).Value & ArrayString(0)
        For CounterArray = LBound(ArrayString) To UBound(ArrayString)
        If CounterArray > 0 Then Cells(RowToPerform, 1).Value = Cells(RowToPerform, 1).Value & ArrayString(CounterArray)
        Next CounterArray
    Loop
    Close #1
End Sub

這些 鏈接也可能有用。 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM