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

Python 如何将数据从文件转储到excel工作表,python,excel,Python,Excel,我想将[3-4行]一些数据转储到excel工作表中。 我可以根据一些标准来转储单行[例如,如果行以//或/*]开头,但如果行从/*开始,在3-4句话之后,则以*/结尾。 只有以/*开头的第一行和以*/结尾的最后一行可以转储。 我无法处理这种情况,请帮忙 以下是我的密码:- fileopen = open("test.c") for var in fileopen: if var.startswith("//"): var1 = var1 + var

我想将[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的变体!带
位置提示*/

我想通过python脚本一次转储整个数据,但我只能转储以/*开头的“第一行”

任何建议请

提前谢谢

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

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)
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
公共子测试()
将iFN设置为整数
朦胧的细线
整数形式的整数倍
模糊的字符串
Dim iRow作为整数
iFN=FreeFile()
i倍数=0
sComment=“”
iRow=1
'根据需要更改此路径
打开“d:\temp\xl.txt”作为iFN输入
而非EOF(iFN)
sLine=“”
行输入#iFN,sLine
如果immultiple=1,则
sComment=sComment和sLine
如果左(sLine,2)=“*/”则
i倍数=0
如果结束
其他的
如果左(sLine,2)=“/”,则
sComment=sLine
如果左(sLine,2)=“/*”则
sComment=sLine
i倍数=1
如果结束
如果结束
如果immultiple=0且修剪(sComment)“,则
此工作簿.Worksheets(1).Cells(iRow,1).Value2=sComment
iRow=iRow+1
sComment=“”
如果结束
温德
关闭#iFN
MsgBox“完成!”
端接头

这就是python,对吗?没有任何python知识的Excel用户将无法回答您的问题,并且可能需要一段时间才能看到您的问题。如果是,那么还需要添加python标记。否则,请添加任何相关标记。使用ostermiller中的以下行来构建所需的正则表达式:是的,我想通过python脚本将数据转储到excel工作表中。感谢David C.Rankin的建议。但它在python中不起作用,会出现类似“无效表达式”的错误。我相信op需要python的解决方案。非常感谢您的回复。它工作正常,但不符合我的要求。因为我需要在统计实际的c代码之前获取注释行。如果代码之间的注释不应该出现,并且在乞讨中没有注释[在实际开始之前],那么控制器应该出现。。就这些@AnshuSharma更新了代码,只搜索第一条注释,因为没有确切的方法来预测C代码的起始位置。希望这有帮助:-)谢谢@user1492071:,我也这么做了,但是出现了“UnicodeDecodeError:'utf8'编解码器无法解码第18位的字节0xff:无效的开始字节”错误。有什么建议吗???@AnshuSharma,这个错误肯定是因为excel接口模块而抛出的,您没有指定它。您可以通过
unicode(var1,errors='ignore')轻松忽略无效字节。
再次感谢@user1492071。我已经将unicode(var1,errors='ignore')添加到这段代码中,但仍然得到相同的错误。还有一个问题,如何指定excel接口模块??。我已经导入了xlsxwriter python包。好吗??