如何找到一个单词开头。结束于;在大文件中并保存该文件后的相应表名。 HQL

时间:2017-04-18 03:20:07

标签: python

输入文件 CREATE TABLE IF NOT EXISTS test.employee(eid int,name String,salary String,destination String) 评论'员工详细信息' 行格式已删除 字段由'\ t'终止 由'\ n'终止的线路 存储为文本文件; CREATE TABLE IF NOT EXISTS test.employee1(eid int,name String,salary String,destination String) 评论'员工详细信息' 行格式已删除 字段由'\ t'终止 由'\ n'终止的线路 存储为文本文件; CREATE TABLE IF NOT EXISTS test.employee2(eid int,name String,salary String,destination String) 评论'员工详细信息' 行格式已删除 字段由'\ t'终止 由'\ n'终止的线路 存储为文本文件; ......等等

预期产出:

CREATE TABLE IF NOT EXISTS test.employee(eid int,name String,salary String,destination String) 评论'员工详细信息' 行格式已删除 字段由'\ t'终止 由'\ n'终止的线路 存储为文本文件;

将其另存为employee.hql 和CREATE TABLE IF NOT EXISTS test.employee1(eid int,name String,salary String,destination String) 评论'员工详细信息' 行格式已删除 字段由'\ t'终止 由'\ n'终止的线路 存储为文本文件;

将其另存为employee1.hql 等等..... 我尝试使用re,对我来说,它可能只捕获表名,或者以数据结束。无法加入两个重新表达式。我是python的新手。帮助我如何实现这一目标。

2 个答案:

答案 0 :(得分:0)

这取决于您的输入文件有多大,但这是一个解决方案:

import re
sql_file = "sql.txt"

with open(sql_file) as f:
    data=f.read().replace('\n', '')

    items = data.split("; ")
    for item in items:
        if item: # skip blank lines
            sql = item + ";" 
            table_name = re.findall(r"(\w+\.\w+)", sql)
            if table_name:
                _, outfile = table_name[0].split(".")
                outfile += ".hql"
                print("Writing:", outfile)
                with open( outfile, "w") as f:
                    f.write(sql + "\n")

基本上,它读取while sql输入,然后它分为; ,后跟一个空格。如果你有任何其他分号,你需要将其修改为不那么脆弱。

接下来,它会查看每个项目,并查找字母,句点,字母。然后它将它拆分,并将第二部分(即您的表名)用作文件名。

最后,它会将SQL写出来并为其提供一个文件名,如上所述。

答案 1 :(得分:0)

    <footer>
      
    <div class="row-flex--footer">
              <div class="column">
                <nav>
                  <h4 class="hl--list footer__hl">Company</h4>
                  <ul>
                    <li> <a class="footer__link">About us</a></li>
                    <li><a class="footer__link">Careers</a></li>
                    <li> <a class="footer__link">News</a></li>
                  </ul>
                </nav>
              </div>
              <div class="column">
                <nav> 
                  <h4 class="hl--list footer__hl">Surgeons</h4>
                  <ul>
                    <li> <a class="footer__link">3D Business Manager</a></li>
                    <li><a class="footer__link">Plans &amp; Pricing</a></li>
                  </ul>
                </nav>
              </div>
              <div class="column">         
                <nav> 
                  <h4 class="hl--list footer__hl">Patients  </h4>
                  <ul>
                    <li> <a class="footer__link">Find a Crisalix surgeon</a></li>
                    <li><a class="footer__link">Community</a></li>
                  </ul>
                </nav>
              </div>
              <div class="column">            
                <nav>
                  <h4 class="hl--list footer__hl">Support </h4>
                  <ul>
                    <li> <a class="footer__link">Surgeon Help Center</a></li>
                    <li><a class="footer__link">Patient Help Center</a></li>
                    <li><a class="footer__link">Surgeon Help Center</a></li>
                  </ul>
                </nav>
              </div>
              <div class="column">          
                <nav>
                  <h4 class="hl--list footer__hl">Legal</h4>
                  <ul>
                    <li> <a class="footer__link">Universal terms</a></li>
                    <li><a class="footer__link">Privacy policy</a></li>
                    <li><a class="footer__link">Security statements</a></li>
                  </ul>
                </nav>
              </div>
              <div class="column">           
                <nav>
                  <h4 class="hl--list footer__hl">Social</h4>
                  <ul>
                    <li> <a class="footer__link">Facebook</a></li>
                    <li><a class="footer__link">Twitter</a></li>
                    <li><a class="footer__link">Youtube</a></li>
                  </ul>
                </nav>
              </div>
            </div>
          </footer>

不是很清楚,但这可能对你有帮助。