【发布时间】:2019-10-22 15:29:13
【问题描述】:
我正在尝试替换文本文件中的某些单词(基本上是每行的第二个单词),然后将它们写回新文件或覆盖现有文件。
我以为我正在取得进展,但是当我去写入一个新文件时,我收到一条错误消息,说我无法将列表写入文本文件。我不能简单地将一个单词替换为另一个单词,因为我有一个“else”子句,它涵盖了与我需要替换的其他单词不匹配的任何单词。
这是我尝试修改的文本示例,该文本包含在 .txt 文件中:
id int,
organization_id int,
billing_month date,
fee_type varchar(100),
rate float,
price float,
uom varchar(25),
amount float,
currency_code_id float,
process_ts timestamptz NOT NULL DEFAULT (now())::timestamptz(6)
我想改变:
'int' --> 'BIGINT'
'numeric' --> 'DOUBLE'
'float' --> 'DOUBLE'
ELSE other data type --> 'STRING' .
在原始数据中,请注意有些还有其他字符,例如“varchar(100)” - 我想用“STRING”替换这些字符并删除“(100)”部分。
然后覆盖或创建一个新的文本文件。因此,如果正确替换,上述示例输出将是:
id BIGINT,
organization_id BIGINT,
billing_month STRING,
fee_type STRING,
rate DOUBLE,
price DOUBLE,
uom STRING,
amount DOUBLE,
currency_code_id DOUBLE,
process_ts STRING
我不知道是否应该创建列表,然后修改它们,然后将这些列表写入文本文件、字典或其他我没有想到的方法。我是一个初学者,如果这不是很清楚,请道歉。
【问题讨论】:
-
解决方案是否需要在python中? Perl 也可以做到这一点。它更适合字符串替换。
-
是的,不幸的是,我 100% 不熟悉 Perl,所以如果这在 Python 中是可能的,我想坚持下去
-
我刚刚也将“process_ts”添加到要替换的字符串列表中,因为这是我需要考虑的另一个极端情况。如果重要的话,并不是我所有的字符串行都只有 2 个字长
标签: python python-3.x indexing readlines