如何将数据从文件转储到Excel工作表

时间:2014-06-18 06:02:12

标签: python excel

我想将[3-4行]一起转储到Excel工作表中 我能够根据某些标准转储单行[如果行以//或/ *开头行,但是如果行从/ *开始,并且在3-4个句子之后,则以* /。 只有从/ *开始的第一行和以* /结尾的最后一行才能转储 我无法处理这种情况,请帮助。

以下是我的代码: -

fileopen = open("test.c")         
for var in fileopen:   
if var.startswith("//"):    
   var1 = var1 + var  
   continue  
 if var.startswith("/*"):  
   var1 = var1 + var  
   continue    

 else:  
   continue  
worksheet.write(i, 5,var1,cell_format)

注意: - 上面的代码会有缩进问题。由于我不知道如何将代码正确地放在堆栈中,因此请忽略此问题。

例如: -
    / *测试为i386生成正确的数据预取指令
    使用3DNow的变体! prefetchw或SSE预取指令与
    地方提示。 * /

我想通过python脚本一次性转储整个数据,但我只能转储" First Line",它以/*开头。

请提出任何建议!!!
提前致谢。

2 个答案:

答案 0 :(得分:0)

import re

fileopen = open("test.c")

# Convert file to a string
source_code = ""
for var in fileopen:
    source_code += var

# Find the first comment from the source code
pattern = r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"'
var1 = re.search(pattern, source_code, re.DOTALL | re.MULTILINE).group() # first comment

var1 = unicode(var1, errors='ignore')
worksheet.write(i, 5, var1, cell_format)

答案 1 :(得分:0)

此VBA读取文本文件并将所有注释行转储到第一个工作表

Public Sub test()
    Dim iFN As Integer
    Dim sLine As String
    Dim iMultiple As Integer
    Dim sComment As String
    Dim iRow As Integer

    iFN = FreeFile()
    iMultiple = 0
    sComment = ""
    iRow = 1

    'Change this path as required
    Open "d:\temp\xl.txt" For Input As #iFN

    While Not EOF(iFN)
        sLine = ""
        Line Input #iFN, sLine
        If iMultiple = 1 Then
            sComment = sComment & sLine
            If Left(sLine, 2) = "*/" Then
                iMultiple = 0
            End If
        Else
            If Left(sLine, 2) = "//" Then
                sComment = sLine
            ElseIf Left(sLine, 2) = "/*" Then
                sComment = sLine
                iMultiple = 1

            End If
        End If
        If iMultiple = 0 And Trim(sComment) <> "" Then
            ThisWorkbook.Worksheets(1).Cells(iRow, 1).Value2 = sComment
            iRow = iRow + 1
            sComment = ""
        End If
    Wend
    Close #iFN
    MsgBox "Done!"
End Sub