Python 读取带分隔符的文件,其中一个字段可以拆分为多行(或不拆分)
我有一个带分隔符的文件,这让我有点悲伤。它是以管道分隔的,有6个字段。但字段4可以拆分为多行或不包含任何内容。我需要一种从字段4中删除换行符字段的方法 这是我得到的 导入csvPython 读取带分隔符的文件,其中一个字段可以拆分为多行(或不拆分),python,pandas,csv,delimited-text,Python,Pandas,Csv,Delimited Text,我有一个带分隔符的文件,这让我有点悲伤。它是以管道分隔的,有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 dsf
#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\u csv读取整个文件吗?有更好的解决办法吗
标题在所有记录中都是恒定的。用占位符替换所有双换行符,然后明确删除单换行符,然后可以在占位符位置再次恢复单换行符,这是一种解决方案吗 你可以试试
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
用占位符简单地替换所有双换行符,然后明确地删除单个换行符,然后可以再次在占位符位置恢复单个换行符,这是一种解决方案吗 你可以试试
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