我有一个定界文件,这使我有些悲伤。它是由管道分隔的6个字段。但是字段4可以分为几行,也可以不包含任何内容。我需要一种方法从字段4中删除换行符。
这就是我所拥有的
导入csv
#header is constant
#filedone|fieldtwo|three|four|five|six
content = """"asfdd|b|c|defg
ijklmnopque2
|record|sadfe
1324|b|c|defg
ijklmnopqu
dafdsasfde2asdf
dsfdsf
dsfadfadse2fdsase2
asdfasdfasfe2
|record|afasde
3243243|b|c|defg
ijklmnopque2
|record|adf
startrecord4|b|c||record|adf
"""
def extract():
x = []
y = []
x = content.split('|')
for item in x:
if (len(item) > 4):
y.append(item.replace('\n', '').replace('\r', ' '))
else:
y.append(item)
print(y)
if __name__ == '__main__':
extract()
这将运行,而问题只是将其全部输出到一行中。我仍然需要它来输出没有换行符的单个记录(在这种情况下为4),但是我不确定如何。 我可以使用pandas.read_csv读取整个文件吗?有更好的解决方案吗?
标题在所有记录中都是恒定的。
答案 0 :(得分:2)
您是否可以使用占位符简单地替换所有 double 换行符,然后显式删除单个换行符,然后再在占位符位置恢复单个换行符呢?
您可以尝试
sth_unique = '#%@#'
c = content.replace('\n\n', sth_unique).replace('\n', '').replace(sth_unique, '\n')
print(c)
#"asfdd|b|c|defgijklmnopque2|record|sadfe
#1324|b|c|defgijklmnopqudafdsasfde2asdfdsfdsfdsfadfadse2fdsase2asdfasdfasfe2|record|afasde
#3243243|b|c|defgijklmnopque2|record|adf
#startrecord4|b|c||record|adf