Skip to main content
 首页 » 编程设计

使用正则表达式 (re) 删除多余换行符的 Python 脚本

2024年11月01日29youxin

我有一个制表符分隔的文本文件,其中可能包含一些包含换行符的值,如下所示:

        col1    col2    col3 
 
row1    val1    "Some text 
containing newlines. Yup, possibly 
more than one..."        val3 
row2    val4    "val5"    val6 

注意:

  • 包含换行符的文本值保证最初用双引号括起来
  • 行数或列数可能不同。
  • 任何值都可以是文本或数字,可以包含换行符并且不能

我正在尝试使用 re 编写一个小的 Python 脚本,以便:

  • 去掉额外的换行符(但保留原来的换行符,即在每一行的末尾)
  • 用双引号将每个值括起来

如果有这样的形式就好了:

def normalize_format(data, delimiter = '\t'): 
    data = re.sub(_DESIRED_REGEX_, r'"\1"', data) 
    return data 

data 是作为单个字符串的整个文件内容,_DESIRED_REGEX_ 是我想知道的内容

re 的使用不是强制性的,但简短而优雅的解决方案值得赞赏:)

请您参考如下方法:

您应该使用 csv module相反:

import csv 
with open("mycsv.csv", "rb") as infile, open("newcsv.csv", "wb") as outfile: 
    reader = csv.reader(infile, delimiter="\t") 
    writer = csv.writer(outfile, delimiter="\t", quoting=csv.QUOTE_ALL) 
    # Now you can remove all the newlines within fields 
    # and write them back to a new CSV file: 
 
    for row in reader: 
        writer.writerow([field.replace("\n", " ") for field in row])