Python - 使用定界符从文本文件中拆分数据
Python - Splitting data from text file using a delimiter
我正在尝试读取一组文本文件并将它们保存到 Dataframe 中。多亏了@jezrael,我已经设法让它工作,如下所示:
list_ = []
dfs = []
for file_ in allFiles:
with open(file_) as fp:
lines1 = fp.read().split('\n')
b = [i.split('~', 1)[1].split('*') for i in lines1]
df = pd.DataFrame(b)
dfs.append(df)
dfbig = pd.concat(dfs, ignore_index=True)
dfbig.to_csv('file.csv')
但是我看到有几行有多个 ('~')
条目,因此每次当 ('~')
连续出现不止一次时,它只执行一次拆分。我想看看如何修改上面的代码,以便每次 ('~')
出现时都会发生拆分。
示例数据:
[ABC*DEF*123>~123*999*HHH~HELLO*TEST*DATA]
预期输出:
123 999 HHH
HELLO TEST DATA
您可以更改:
b = [i.split('~', 1)[1].split('*') for i in lines1]
通过所有 ~
值的扁平化和拆分来列出理解并过滤掉第一个值:
b = [x.split('*') for i in lines1 for x in i.split('~')[1:]]
正在验证:
lines1 = ['ABC*DEF*123>~123*999*HHH~HELLO*TEST*DATA']
b = [x.split('*') for i in lines1 for x in i.split('~')[1:]]
print (b)
[['123', '999', 'HHH'], ['HELLO', 'TEST', 'DATA']]
然后解决方案应更改为 extend
:
list_ = []
allFiles = glob.glob('csv/*.*')
for file_ in allFiles:
with open(file_) as fp:
lines1 = fp.read().split('\n')
b = [x.split('*') for i in lines1 for x in i.split('~')[1:]]
list_.extend(b)
dfbig = pd.DataFrame(list_)
我正在尝试读取一组文本文件并将它们保存到 Dataframe 中。多亏了@jezrael,我已经设法让它工作,如下所示:
list_ = []
dfs = []
for file_ in allFiles:
with open(file_) as fp:
lines1 = fp.read().split('\n')
b = [i.split('~', 1)[1].split('*') for i in lines1]
df = pd.DataFrame(b)
dfs.append(df)
dfbig = pd.concat(dfs, ignore_index=True)
dfbig.to_csv('file.csv')
但是我看到有几行有多个 ('~')
条目,因此每次当 ('~')
连续出现不止一次时,它只执行一次拆分。我想看看如何修改上面的代码,以便每次 ('~')
出现时都会发生拆分。
示例数据:
[ABC*DEF*123>~123*999*HHH~HELLO*TEST*DATA]
预期输出:
123 999 HHH
HELLO TEST DATA
您可以更改:
b = [i.split('~', 1)[1].split('*') for i in lines1]
通过所有 ~
值的扁平化和拆分来列出理解并过滤掉第一个值:
b = [x.split('*') for i in lines1 for x in i.split('~')[1:]]
正在验证:
lines1 = ['ABC*DEF*123>~123*999*HHH~HELLO*TEST*DATA']
b = [x.split('*') for i in lines1 for x in i.split('~')[1:]]
print (b)
[['123', '999', 'HHH'], ['HELLO', 'TEST', 'DATA']]
然后解决方案应更改为 extend
:
list_ = []
allFiles = glob.glob('csv/*.*')
for file_ in allFiles:
with open(file_) as fp:
lines1 = fp.read().split('\n')
b = [x.split('*') for i in lines1 for x in i.split('~')[1:]]
list_.extend(b)
dfbig = pd.DataFrame(list_)