2

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

        col1    col2    col3

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

笔记:

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

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

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

以这样的形式拥有它会很棒:

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

data整个文件内容作为单个字符串在哪里,是_DESIRED_REGEX_我想弄清楚的

的使用re不是强制性的,但感谢简短而优雅的解决方案:)

4

1 回答 1

2

您应该改用该csv模块

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])
于 2013-09-14T20:13:00.557 回答