keywords_cap = ['SpA', 'SPA', 'LIMITADA', 'LTDA', 'S.A.']
keywords_cap = map(re.escape, keywords_cap)
keywords_cap.sort(key=len, reverse=True)
obj = re.compile(r'[:,;.]\s*"?([^:,;.]*?(?<!\w)(?:{}))'.format('|'.join(keywords_cap)))
m = obj.search(mensaje)
if m:
company_name = ("COMPANY NAME: {}".format(m.group(1)))
regex = r"\s*CVE\s+([^|]*)"
matches = re.search(regex, mensaje)
if matches:
company_cve = ("CVE: %s" % matches.group(1).strip())
dic = [company_name, company_cve, "example", "another"] #dictionary
create_csv = "exampleCsv.csv"
csv = open(create_csv, "w")
columnTitleRow = "name, cve\n"
csv.write(columnTitleRow)
for key in dic.keys():
company_name = key
company_cve = dic[key]
row = company_name + "," + company_cve + "\n"
csv.write(row)
for中有很多正则表达式。这是一个在文本文件中找到变量CVE的示例。我希望能够将用逗号分隔的csv写入文本中找到的所有变量的结果。
输入:变量company_name和company_cve(以及更多从正则表达式中提取的变量...)
输出:CVE,其标头为变量的名称,在另一行下方,包含变量company_name,company_cve和其他变量的结果。
答案 0 :(得分:1)
问题陈述尚不完全清楚,但我认为您正在收集有关一个(或多个)公司的数据,然后您希望将这些数据打印到CSV文件中。
首先,您现有的代码有几个问题:
dic = [company_name, company_cve, "example", "another"] #dictionary
这是一个列表,而不是字典。字典具有键值结构,将这样声明:
dic = { 'name': company_name, 'cve': company_cve, 'example': 'example data' }
第二,打开文件时最好使用with
以防止潜在的文件打开错误:
with open('exampleCsv.csv', 'w') as csvfile:
# write to the file
第三,如果您使用现有的csv
库,则不必担心公司名称或其他文件数据中包含逗号的情况; csv
将为您处理。有关完整的详细信息,请参见csv
library documentation。您需要在脚本的开头导入cvs
库:
import csv
import re
并创建一个csv.writer
对象以输出数据:
with open('exampleCsv.csv', 'w') as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='"') # set your CSV options here
根据用于保存公司数据的数据结构,可以用不同的方式将其打印出来。
# list of headers
headers = [ 'company_name', 'company_cve', 'prop_1', 'prop_2' ]
# list of variables holding company data
dic = [ company_name, company_cve, example_1, example_2 ]
with open('exampleCsv.csv', 'w') as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='"')
writer.writerow( headers ) # print the header row
writer.writerow( dic )
或者如果您创建了包含公司数据的字典:
company = {
'company_name': 'Company A',
'company_cve': 'Some value',
'prop_1': 'value 1',
'prop_2': 'value 2'
}
# note that dictionary keys match the headers
headers = [ 'company_name', 'company_cve', 'prop_1', 'prop_2' ]
with open('exampleCsv.csv', 'w') as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='"')
writer.writerow( headers )
writer.writerow( map( lambda x: company[x], headers ) )
或许多公司的词典列表:
company_data = [{
'company_name': 'Company A',
'company_cve': 'Some value',
'prop_1': 'value 1',
'prop_2': 'value 2'
},{
'company_name': 'Company B',
'company_cve': 'A different value',
'prop_1': 'value 3',
'prop_2': 'value 4'
}]
headers = [ 'company_name', 'company_cve', 'prop_1', 'prop_2' ]
with open('exampleCsv.csv', 'w') as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='"')
writer.writerow( headers )
for c in company_data:
writer.writerow( map( lambda x: c[x], headers ) )