3 回答
TA贡献1802条经验 获得超4个赞
如果每个旅馆都在文件中声明了每个字段(即,即使所有旅馆都有相同数量的行,即使其中一些行为空),也可以尝试使用简单的正则表达式来提取用引号引起来的每个值( “ xxx”),然后按数字将其分组(例如,将每5个字段分组为一行,然后添加一个换行符)。
一个有效的简单正则表达式将是["'][^"']*["'](编辑:这是因为我看到某些文件(即Phone)使用单引号,其余使用引号)。
要进行搜索,请使用findall:
compPattern = re.compile(pattern)
results = compPattern.findall(compPattern)
TA贡献1891条经验 获得超3个赞
如果这是您必须常规执行的操作,并且希望使该过程完全自动化,我认为最简单的方法就是使用Python解析文件,然后使用csv Python模块写入csv 。
您的代码可能看起来像这样:
with open("datafile.txt") as f:
hotel_data = []
for line in f:
# Let's make sure the line not empty
if line:
if "new hotelData();" in line:
if hotel_data:
write_to_csv(hotel_data)
hotel_data = []
else:
# Data, still has ending quote and semi colon
data = line.split("= ")[1]
# Remove ending quote and semi colon
data = data[:-2]
hotel_data.append(data)
def write_to_csv(hotel_data):
with open('hotels.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=',',
quotechar='""', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(hotel_data)
请注意,我尚未测试此代码,它仅是为了帮助您并为您指明正确的方向,它不是完整的解决方案。
添加回答
举报