将硬编码的初始化值转换为CSV

我想使用Python从一堆包含硬编码数据的javascript文件中将以下所示的数据行提取到一个csv文件中,如下所示:



.... html代码...


hotels [0] = new hotelData();

hotels [0] .hotelName =“ MANHATTAN”;

hotels [0] .hotelPhone =“”;

hotels [0] .hotelSalesPhone =“”;

hotels [0] .hotelPhone ='Phone:888-350-6432 

';

hotels [0] .hotelStreet =“ 787 11TH AVENUE”;

hotels [0] .hotelCity =“纽约”;

hotels [0] .hotelState =“ NY”;

hotels [0] .hotelZip =“ 10019”;

hotels [0] .hotelId =“ 51543”;

hotels [0] .hotelLat =“ 40.7686” ;;

hotels [0] .hotelLong =“ -73.992645” ;;



hotels [1] = new hotelData();

hotels [1] .hotelName =“ KOEPPEL”;

hotels [1] .hotelPhone =“”;

hotels [1] .hotelSalesPhone =“”;

hotels [1] .hotelPhone ='电话:718-721-9100 

';

hotels [1] .hotelStreet =“ 57-01 NORTHERN BLVD。”;

hotels [1] .hotelCity =“ WOODSIDE”;

hotels [1] .hotelState =“ NY”;

hotels [1] .hotelZip =“ 11377”;

hotels [1] .hotelId =“ 51582”;

hotels [1] .hotelLat =“ 40.75362” ;;

hotels [1] .hotelLong =“ -73.90366” ;;


    var mykey =“ AlvQ9gNhp7oNuvjhkalD4OWVs_9LvGHg0ZLG9cWwRdAUbsy-ZIW1N9uVSU0V4X-8”;

                var map = null;

                var pins = null;

                var i = null;

                var box = new Array();

                var currentBox = null;


                var mapOptions = {

                凭据:mykey,

                enableSearchLogo:否,

                showMapTypeSelector:否,

                enableClickableLogo:否

                }

..... html代码.....

因此,所需的csv输出将类似于上述数据的行:


曼哈顿,电话:888-350-6432 ...

KOEPPEL``电话:718-721-9100 ...

我是否应该使用代码生成工具直接解析以上语句以获取数据?哪一种最有效的Python方法可将数千个Javascript文件中包含的此类数据转换为csv表格格式?


红糖糍粑
浏览 184回答 3
3回答

慕虎7371278

如果每个旅馆都在文件中声明了每个字段(即,即使所有旅馆都有相同数量的行,即使其中一些行为空),也可以尝试使用简单的正则表达式来提取用引号引起来的每个值( “ xxx”),然后按数字将其分组(例如,将每5个字段分组为一行,然后添加一个换行符)。一个有效的简单正则表达式将是["'][^"']*["'](编辑:这是因为我看到某些文件(即Phone)使用单引号,其余使用引号)。要进行搜索,请使用findall:compPattern = re.compile(pattern)results = compPattern.findall(compPattern)

万千封印

如果这是您必须常规执行的操作,并且希望使该过程完全自动化,我认为最简单的方法就是使用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)请注意,我尚未测试此代码,它仅是为了帮助您并为您指明正确的方向,它不是完整的解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python