因此,我正在创建一个脚本,它将遍历具有特定格式的文件,并将其重新排列为与另一个文件相同的格式。以下是未格式化文件的示例
, 0x40a846, mov [ecx+2bh],al, 88 41 2B, , , , \par
, 0x40a849, jmp $+001775cbh (0x581e14), E9 C6 75 17 00, , , , \par
, 0x40a84e, int3, CC, , , , \par
, 0x40a84f, int3, CC, , , , \par
, 0x40a850, push esi, 56, , , , \par
, 0x40a851, mov esi,ecx, 8B F1, , , , \par
最终目标是使文件的每一行都像这样
^{pr2}$我的主要问题是文件的某些行只有一段源代码,而其他行只有2段源代码,这使得我很难创建一个正则表达式来获取这两段代码而不意外地获取代码字节。我想用捕捉组来重新排列每行的信息。以下是我目前为止的剧本:
import csv
import string
import re, sys
file_to_change = 'testingthecodexlconverter.csv'
# = raw_input("Please specify what codexl file you would like to convert: ")
file1 = open(file_to_change, 'r+')
with file1 as f:
for line in f:
line = line[2:-12]
line = line.rstrip('\n') + ',,'
# mo = re.search(r'(.*?),.*?.*?,.*?(.*?),.*?.*?,.*?(.*?),.*?.*?,.*?(.*?)', line)
#mo = re.search(r'(.*?),.*?(.*?,.*?.*?,).*?.*?,.*?(.*?),.*?.*?,.*?(.*?)', line)
mo = re.search(r'(.*?),.*?(.*?.*?,\S*?,).*?.*?.*?,.*?(.*?),', line)
if mo:
print(mo.group(2))
谁能帮帮我吗?在
我将使用
pandas
并根据您的需要重新排列列,因为它们看起来是合理的csv
格式。此方法还允许您在编辑csv时可视化如何操作csv中的数据:你不清楚每一列的数据格式都是什么。在
我相信你可能在输入的csv文件中丢失了coma。我的建议是搜索这些缺少的逗号,并将它们添加到一个格式正确的输入文件中。在
当然,最快的方法是按照上面提到的使用
.split()
拆分字符串,但似乎您不确定自己在做什么,因此我建议使用pandas
进行解析。在您可以使用csv模块,该模块已包含在其中,但当前未使用。在
新的csv文件如下所示:
^{pr2}$您可以按照其他人的建议,在逗号处拆分行,然后在打印时将其添加回去
这将以以下格式打印:
^{pr2}$相关问题 更多 >
编程相关推荐