如何删除给定约束后的文本?

2024-05-13 12:18:32 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我有一个SQL文件,其中包含以下内容:

createtab_stmt
CREATE EXTERNAL TABLE `table1`(
"  `name_id` bigint, "
"  `address_id` string, "
"  `full_name` bigint, "
  `insert_timestamp` timestamp)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 

**我试图删除从第三句到最后一句(“时间戳”)中的)之后的所有文本。所以输出应该是行格式serde之前的所有内容:

createtab_stmt
    CREATE EXTERNAL TABLE `table1`(
    "  `name_id` bigint, "
    "  `address_id` string, "
    "  `full_name` bigint, "
      `insert_timestamp` timestamp)

这是我现有的代码:

import re
f = open("/home/dir2/ddl", 'rt', encoding='latin-1')
words=f.readlines()

with open("/home/dir1/sampl7.sql","w") as output:
    for i in words:
        output.write(i.replace('"', ''))

有什么想法或建议吗?我不确定正则表达式是最好的选择还是有更好的方法。谢谢


Tags: nameidstringaddresscreatetabletimestampexternal
1条回答
网友
1楼 · 发布于 2024-05-13 12:18:32

我的方法是这样的:

f = open("/home/dir2/ddl", 'rt', encoding='latin-1')
source=f.read()

with open("/home/dir1/sampl7.sql","w") as output:
    output.write(source[:source.find(')')+1].replace('"', ''))

.find()将找到字符')'的索引,我们将使用它来获取从字符0到该索引的字符串(+1以包含''本身)

相关问题 更多 >