txt 到 csv 尝试。无法理解来自 re 的 TypeError

txt to csv attempt. cannot understand the TypeError from re

我正在尝试将此文件 https://bpa.st/SNPQ 转换为 CSV 文件。我花了很长时间将这段代码放在一起,但我不明白为什么它会失败。

import re
f = open('PRM93052012100845','r')
text = f.readlines()
text = re.sub('^\n|\n$','',text)
for no,line in enumerate(text.splitlines()):
    print('"'+'","'.join([i.replace('"','\"').strip() for i in re.split('(?<=^[0-9]{2})([0-9]{13}| {13})|  +',text.splitlines()[no].strip()) if i != None])+'"')

(比粘贴示例中的行多很多)

我得到以下输出:

Traceback (most recent call last):
  File "/home/ben/Documents/WDL Content/eCom Python/printtest.py", line 5, in <module>
    text = re.sub('^\n|\n$','',text)
  File "/usr/lib/python3.8/re.py", line 210, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object

我希望我能说文件中有一些错误数据,但有一个 MS Office 宏可以完成相同的 objective。我很想知道我做错了什么。

text = f.readlines() 给你列表,因此你不能像 stringbytes 那样将它与 re.sub 一起使用。将其替换为 text = f.read()