2

次のように、改行を含む値が含まれている可能性があるタブ区切りのテキスト ファイルがあります。

        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は必須ではありませんが、簡潔でエレガントなソリューションを歓迎します:)

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 に答える