Python-将文本解析,拆分和分离为单独的行

时间:2019-03-15 18:40:30

标签: python csv parsing text split

我有一个文本文件,其中包含我想导入到Access数据库中的数据。文本文件包含一些我想排成一行的段落。我用“ @@@”分隔了每一行

这是我所拥有的示例:

@@@我想去学校,因为这很有趣。 Blah Blah Blah Blah。我今天很开心。 @@@我无缘无故高兴。 Blah Blah Blah Blah Blah。我今天很开心。

我希望这样显示:

  

ID |报告文字

     

1 |我想去学校,因为它很有趣。布拉布拉   布拉布拉我今天玩得很开心。

     

2 |我无缘无故开心。 Blah Blah Blah Blah Blah。我是   今天玩得很开心。

但是,我知道我已经接近我的代码,但是我知道了:

  

ID |报告文字

     

1 |我想去学校,因为它很有趣。布拉布拉   布拉布拉。

     

2 |我今天玩得很开心。

     

3 |我无缘无故开心。 Blah Blah Blah Blah Blah。我是   

     

4 |我今天玩得很开心。

我尝试使用IF语句仅在该行中有“ @@@”的情况下添加ID,但是我无法使其正常工作。如果我这样做的话,我认为它应该可以工作。我有ID和reporttext,使用分号作为分隔符。

这是我的代码:

new BooleanQuery.Builder().add(query1, BooleanClause.OCCUR.MUST)
                              .add(query2, BooleanClause.OCCUR.MUST_NOT)
                              .build();

1 个答案:

答案 0 :(得分:3)

您可以将split("@@@")enumerate(iterable,start_index)与生成器表达式结合使用:

t = """@@@ I would like to go to school because it's so much fun. Blah Blah Blah Blah. I am having so much fun today. @@@ I am so happy for no reason. Blah Blah Blah Blah Blah. I am having so much fun today."""

# split and enumerate(starting at 1)
# the if conditional inside the generator expression eleminates empty lines  
data = list(enumerate( (x.strip() for x in t.split("@@@") if x.strip()), 1))

print(data)
print("")

import csv
with open("t.txt", "w", newline = "") as csvfile:
    writer = csv.writer(csvfile, delimiter=';')
    writer.writerow(('ID', 'Reporttext'))
    writer.writerows(data)

print( open("t.txt").read())

输出:

# data
[(1, "I would like to go to school because it's so much fun. Blah Blah Blah Blah. I am having so much fun today."), 
 (2, 'I am so happy for no reason. Blah Blah Blah Blah Blah. I am having so much fun today.')]


# file
ID;Reporttext
1;I would like to go to school because it's so much fun. Blah Blah Blah Blah. I am having so much fun today.
2;I am so happy for no reason. Blah Blah Blah Blah Blah. I am having so much fun today.

Doku: