我有这样的文字文件。它有 50万行:
(' 12',' 9',' 56',' Trojan.Genome.Win32.230770', ' 04df65889035a471f8346565600841af&#39 ;, ' 9190953854e36a248819e995078a060e0da2e687&#39 ;, ' b6488037431c283da6b9878969fecced695ca746afb738be49103bd57f37d4e4&#39 ;, ' 2015-10-16 00:00:00',' Zillya',' 16',' TROJAN',' trojan .PNG&#39 ;, ' 2016-01-14 21:35:44');的#1行
(' 13',' 3',' 54',' UnclassifiedMalware', ' 069506a02c4562260c971c8244bef301&#39 ;, ' d08e90874401d6f77768dd3983d398d427e46716&#39 ;, ' 78e155e6a92d08cb1b180edfd4cc4aceeaa0f388cac5b0f44ab0af97518391a2&#39 ;, ' 2015-10-15 00:00:00',' Comodo'' 6',' MALWARE','恶意软件.PNG&#39 ;, ' 2016-01-14 21:35:44');的#LINE2
我只想将文本文件保存为以下内容:
Trojan.Genome.Win32.230770,04df65889035a471f8346565600841af, 9190953854e36a248819e995078a060e0da2e687, b6488037431c283da6b9878969fecced695ca746afb738be49103bd57f37d4e4 的#1行
UnclassifiedMalware,069506a02c4562260c971c8244bef301, d08e90874401d6f77768dd3983d398d427e46716, 78e155e6a92d08cb1b180edfd4cc4aceeaa0f388cac5b0f44ab0af97518391a2 的#LINE2
我已经尝试了所有我能想到的正则表达式但是它们没有用。
答案 0 :(得分:0)
由于这是一个以逗号分隔的文件,因此您可以使用正则表达式进行搜索和替换,尽管它不会像在语音编程语言中将字符串拆分一样高效。
<a href='proceed1.php?var=<?php echo $vari;?>' id=btn2 class="btn">Proceed</a>
会找到一个引号,然后捕获所有文本,直到它遇到下一个单引号,然后是逗号和任何尾随空格。
然后,您将重复这一次,每次以逗号分隔的字段重复一次。
看起来有点like this,然后您可以选择要替换回文本的字段。在这种情况下,您只需要字段'([^']*)',\s*
到\4
。
是否可以写入,因此未捕获\8
到\1
?当然,使用非捕获\3
组。然后,您的替换范围从(?:...)
到\1
。但这足以使其足够灵活,如果您想要包含或排除任何其他字段,只需在替换字段中包含或排除它们即可。
答案 1 :(得分:0)
如果这应该多次完成,可能缺少此解决方案,原因很简单,因为缺少文档。
将正则表达式应用于文件(甚至可能无法保存)对于其他人来说,实际上并不是可重现/可理解的。
我正在提出一个python小脚本,以明确你实际上在做什么。除此之外,您还可以完全控制输出的确切格式,并将其写入等等。
# get regex module
import re
filename = 'path/to/your/file.txt'
# open file
with open(filename) as file_handle:
for line in file_handle:
# remove trailing whitespace
line = line.strip()
# if line is empty forget about it
if not line:
continue
# split into comment part and data part
data, comment = line.split(';')
# transform into comma seperated values
# aka. remove whitespace, parentheses, quotes
data = re.sub(r'\s|\(|\)|\'', '', line)
# file is build up like this (TODO: make names more logical)
nr1, nr2, nr3, \
name, \
hash1, hash2, hash3, \
first_date, discoverer, nr4, \
category, snapshot_file, last_date = data.split(',')
# print, or possibly write
print("{name:}, {hash1:}, {hash2:}, {hash3:} {comment:}".format(**locals()))