Python-从csv文件中消除正则表达式匹配

标签 python regex csv

我有一个文件,'in.csv' ,其中有许多条目,如下所示:

[Part 1: A]
Was hab’ ich nur getan?
Hab mich selbst nie hinterfragt
Wer bin ich, wer bin ich, wer bin ich, was bin ich bloß?
Aaaah - wer bin ich, was bin ich bloß?
Ging es all die Zeit lang wirklich nur um mich?
Nur um mich, nur um mich, nur um mich?
Denk’ ich wirklich immer nur an mich?
Nur an mich, nur an mich, nur an mich?

[Part 2: T]
Ich bin so horrible, horrible, horrible
Fehler einzusehen ist mir nicht possible, possible, possible
Jaaah - doch ich denk’ jeden Tag an all den Shit, den ich getan hab’
Warum unterschätz’ ich meinen Impact auf die andern?
Homie, sag mir, warum ficke ich mein Karma
Und geb kein’ Fick auf alles, was die Stimme in mir labert?
Blockiert mich da mein Ego oder weiß ich es nicht besser?
Mann, wann verdammt fühl ich mich bereit etwas zu ändern?
Warum lass’ ich einfach nichts mehr an mich ran?
Warum lass’ ich selbst mich selbst nicht an mich ran?
,1

(...)

我想找到并消除此模式的所有出现:

match = "[\(\[].*?[\)\]]"

我正在尝试这个:

with open('in.csv', 'rb') as in_file, open('out.csv', 'wb') as out_file:
     reader = csv.reader(in_file, delimiter='\t')
     for item in list(reader):
         re.sub(match, ' ', item, flags=re.MULTILINE)      
         out_file.write(item)

但它不起作用。我该如何找到并消除所有 []

最佳答案

问题是你对结果没有做任何事情,表达式是正确的:

with open('in.csv', 'rb') as in_file, open('out.csv', 'wb') as out_file:
     reader = csv.reader(in_file, delimiter='\t')
     for item in list(reader):
         item = re.sub(match, ' ', item, flags=re.MULTILINE) 
         # ---^---     
         out_file.write(item)

sub 函数不会更改原始字符串,而是返回一个新的副本,因此您需要捕获它。您甚至可以通过添加 anchor 来改善您的表达:

^[\(\[].*?[\)\]]

它大大减少了所需的步骤(10倍!),请参阅a demo on regex101.com .

关于Python-从csv文件中消除正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46461168/

相关文章:

python - 自动在文件夹中创建文件(Python)

python - 结合 bool Pandas 数据帧的规范方法

regex - Vim:按空格对齐列

javascript - 仅禁止空格或仅在用户键入字母时显示警报

vba - 从 VBA 中的数组创建 CSV

python - 在不使用等宽字体的情况下,在多个点对齐 Pyplot 图例行中的文本

python - 如何将默认的 Django 引擎数据库从 db.sqlite3 更改为填充测试数据的 mysql 数据库?

python - 无法仅获取 1 次出现的链接

c - 如何使用C在csv中的连续逗号之间添加值?

php - 插入时如何检查mysql数据库列中是否存在值