我有一个制表符分隔的文本文件,其中可能包含一些包含换行符的值,如下所示:
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])
