Filters in TXT file

Asked

Viewed 439 times

1

https://drive.google.com/open?id=1ud743B57XM_iZ_wvQrSYGRrMo-5nT94p

I have a file txt that I have to apply a filter to bring me a field in column 2. And then save the result in csv, so it’s easier to move.

It’s just very difficult to manipulate the data txt. So far only able to open the files without line 1(as it is a useless header).
I used the code:

trecho = open('exemplo.txt', 'r').read().splitlines()[1:5]
print(trecho)

Contents of the txt file:

RH NEG                 2018-11-13 2018-11-13 002095584
2018-11-13;heberteste                                            ;0000000010; 000000000128.950000;000000000000000002;09:52:04.625;1;2018-11-13;000006816341074;000000000513284;2;2018-11-13;000006816341042;000000000513285;2;0;00000088;00001130
2018-11-13;heberteste                                            ;0000000070; 000000000128.500000;000000000000000001;10:29:29.292;1;2018-11-13;000006816341437;000000000524369;2;2018-11-13;000006816341463;000000000524370;1;0;00000003;00000107
2018-11-13;heberteste                                            ;0000000090; 000000000128.500000;000000000000000001;10:34:28.447;1;2018-11-13;000006816341499;000000000526119;2;2018-11-13;000006816341500;000000000526120;1;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000100; 000000000128.050000;000000000000000001;10:43:51.211;1;2018-11-13;000006816341514;000000000530164;2;2018-11-13;000006816341319;000000000530165;1;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000130; 000000000128.400000;000000000000000001;11:20:18.817;1;2018-11-13;000006816341940;000000000545815;1;2018-11-13;000006816341855;000000000545816;2;0;00000088;00000003
2018-11-13;heberteste                                            ;0000000150; 000000000127.600000;000000000000000002;11:36:13.283;1;2018-11-13;000006816342069;000000000554070;2;2018-11-13;000006816342139;000000000554071;1;0;00000107;00000003
2018-11-13;heberteste                                            ;0000000190; 000000000128.000000;000000000000000001;11:51:35.790;1;2018-11-13;000006816342313;000000000559841;1;2018-11-13;000006816342289;000000000559842;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000200; 000000000128.000000;000000000000000001;11:54:43.262;1;2018-11-13;000006816342357;000000000561090;1;2018-11-13;000006816342289;000000000561091;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000210; 000000000127.600000;000000000000000001;12:59:21.065;1;2018-11-13;000006816342824;000000000594427;2;2018-11-13;000006816342851;000000000594428;1;0;00000003;00000088
2018-11-13;heberteste                                            ;0000000230; 000000000127.400000;000000000000000001;13:01:31.207;1;2018-11-13;000006816340294;000000000595852;2;2018-11-13;000006816342866;000000000595853;1;0;00000003;00000115
2018-11-13;heberteste                                            ;0000000240; 000000000127.400000;000000000000000001;13:04:39.951;1;2018-11-13;000006816340294;000000000599434;2;2018-11-13;000006816342893;000000000599435;1;0;00000003;00000088
2018-11-13;heberteste                                            ;0000000250; 000000000127.400000;000000000000000003;13:05:28.547;1;2018-11-13;000006816340294;000000000600457;2;2018-11-13;000006816342872;000000000600458;1;0;00000003;00000115
2018-11-13;heberteste                                            ;0000000260; 000000000127.400000;000000000000000003;13:05:28.672;1;2018-11-13;000006816340294;000000000600485;2;2018-11-13;000006816342902;000000000600486;1;0;00000003;00000115
2018-11-13;heberteste                                            ;0000000270; 000000000127.400000;000000000000000003;13:05:28.796;1;2018-11-13;000006816340294;000000000600492;2;2018-11-13;000006816342903;000000000600493;1;0;00000003;00000115
2018-11-13;heberteste                                            ;0000000280; 000000000127.400000;000000000000000003;13:05:46.409;1;2018-11-13;000006816340294;000000000600796;2;2018-11-13;000006816342913;000000000600797;1;0;00000003;00000088
2018-11-13;heberteste                                            ;0000000290; 000000000127.400000;000000000000000002;13:06:18.642;1;2018-11-13;000006816340294;000000000601431;2;2018-11-13;000006816342929;000000000601432;1;0;00000003;00000115
2018-11-13;heberteste                                            ;0000000300; 000000000127.400000;000000000000000014;13:06:46.037;1;2018-11-13;000006816340294;000000000601863;2;2018-11-13;000006816342935;000000000601864;1;0;00000003;00000107
2018-11-13;heberteste                                            ;0000000310; 000000000127.250000;000000000000000001;13:07:57.548;1;2018-11-13;000006816341631;000000000602867;2;2018-11-13;000006816342951;000000000602868;1;0;00000093;00000088
2018-11-13;heberteste                                            ;0000000320; 000000000127.250000;000000000000000001;13:09:32.861;1;2018-11-13;000006816342972;000000000604269;1;2018-11-13;000006816342952;000000000604270;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000340; 000000000127.000000;000000000000000001;13:15:53.290;1;2018-11-13;000006816340152;000000000607368;2;2018-11-13;000006816343014;000000000607369;1;0;00000107;00000088
2018-11-13;heberteste                                            ;0000000350; 000000000127.000000;000000000000000002;13:19:50.193;1;2018-11-13;000006816343049;000000000609663;1;2018-11-13;000006816343028;000000000609664;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000360; 000000000127.000000;000000000000000001;13:20:08.604;1;2018-11-13;000006816343051;000000000609944;1;2018-11-13;000006816343028;000000000609945;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000380; 000000000126.850000;000000000000000001;13:21:05.820;1;2018-11-13;000006816340130;000000000610730;2;2018-11-13;000006816343057;000000000610731;1;0;00000003;00000088
2018-11-13;heberteste                                            ;0000000370; 000000000126.850000;000000000000000001;13:21:05.820;1;2018-11-13;000006816339968;000000000610728;2;2018-11-13;000006816343057;000000000610729;1;0;00000386;00000088
2018-11-13;heberteste                                            ;0000000390; 000000000127.000000;000000000000000003;13:31:46.062;1;2018-11-13;000006816343123;000000000619774;1;2018-11-13;000006816343028;000000000619775;2;0;00000386;00000107
2018-11-13;heberteste                                            ;0000000420; 000000000126.550000;000000000000000001;13:50:05.252;1;2018-11-13;000006816343212;000000000626737;2;2018-11-13;000006816343285;000000000626738;1;0;00000088;00000386
2018-11-13;heberteste                                            ;0000000430; 000000000126.550000;000000000000000001;13:50:05.252;1;2018-11-13;000006816343055;000000000626739;2;2018-11-13;000006816343285;000000000626740;1;0;00000093;00000386
2018-11-13;heberteste                                            ;0000000450; 000000000127.000000;000000000000000002;14:02:05.847;1;2018-11-13;000006816343394;000000000628566;1;2018-11-13;000006816343028;000000000628567;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000540; 000000000126.300000;000000000000000001;14:30:28.815;1;2018-11-13;000006816343723;000000000635848;1;2018-11-13;000006816343718;000000000635849;2;0;00000088;00000115
2018-11-13;heberteste                                            ;0000000550; 000000000126.000000;000000000000000001;14:34:55.147;1;2018-11-13;000006816343326;000000000637084;2;2018-11-13;000006816343784;000000000637085;1;0;00000107;00000088
2018-11-13;heberteste                                            ;0000000560; 000000000126.000000;000000000000000001;14:41:05.046;1;2018-11-13;000006816343815;000000000638801;2;2018-11-13;000006816343127;000000000638802;1;0;00000088;00000003
2018-11-13;heberteste                                            ;0000000580; 000000000126.300000;000000000000000004;14:47:21.562;1;2018-11-13;000006816343899;000000000640855;1;2018-11-13;000006816343761;000000000640856;2;0;00000088;00000003
2018-11-13;heberteste                                            ;0000000590; 000000000126.300000;000000000000000001;14:54:09.132;1;2018-11-13;000006816343951;000000000642905;1;2018-11-13;000006816343946;000000000642906;2;0;00000088;00000003
2018-11-13;heberteste                                            ;0000000600; 000000000126.400000;000000000000000002;14:59:10.618;1;2018-11-13;000006816343989;000000000644134;1;2018-11-13;000006816343728;000000000644135;2;0;00000088;00000003
2018-11-13;heberteste                                            ;0000000610; 000000000126.400000;000000000000000001;15:20:17.042;1;2018-11-13;000006816344163;000000000649842;1;2018-11-13;000006816343728;000000000649843;2;0;00000088;00000003
2018-11-13;heberteste                                            ;0000000630; 000000000126.500000;000000000000000001;15:21:55.894;1;2018-11-13;000006816344179;000000000650262;1;2018-11-13;000006816343736;000000000650263;2;0;00000088;00000003
2018-11-13;heberteste                                            ;0000000640; 000000000126.500000;000000000000000001;15:21:56.494;1;2018-11-13;000006816344180;000000000650266;1;2018-11-13;000006816343736;000000000650267;2;0;00000088;00000003
2018-11-13;heberteste                                            ;0000000650; 000000000126.500000;000000000000000001;15:23:04.480;1;2018-11-13;000006816344191;000000000650624;2;2018-11-13;000006816344194;000000000650625;1;0;00000107;00000088
2018-11-13;heberteste                                            ;0000000690; 000000000127.000000;000000000000000002;16:16:38.956;1;2018-11-13;000006816344708;000000000679240;1;2018-11-13;000006816343028;000000000679241;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000870; 000000000127.000000;000000000000000002;16:18:50.473;1;2018-11-13;000006816344803;000000000681511;1;2018-11-13;000006816343028;000000000681512;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000880; 000000000127.000000;000000000000000001;16:22:50.396;1;2018-11-13;000006816344725;000000000684797;1;2018-11-13;000006816343028;000000000684798;2;0;00000107;00000107
2018-11-13;heberteste                                            ;0000000900; 000000000127.000000;000000000000000001;16:22:55.429;1;2018-11-13;000006816344991;000000000684858;1;2018-11-13;000006816343028;000000000684859;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000890; 000000000127.000000;000000000000000001;16:22:55.429;1;2018-11-13;000006816344991;000000000684856;1;2018-11-13;000006816343028;000000000684857;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000910; 000000000127.000000;000000000000000002;16:25:58.087;1;2018-11-13;000006816345164;000000000687581;1;2018-11-13;000006816343028;000000000687582;2;0;00000107;00000107
2018-11-13;CCMX18                                            ;0000000140; 000000000036.690000;000000000000000001;09:00:30.000;1;2018-11-13;000006816339990;000000000501806;2;2018-11-13;000006816339872;000000000501807;2;0;00000115;00000003
2018-11-13;CCMX18                                            ;0000000150; 000000000036.660000;000000000000000001;09:03:24.556;1;2018-11-13;000006816339870;000000000502280;2;2018-11-13;000006816340183;000000000502281;1;0;00000003;00000003
2018-11-13;CCMX18                                            ;0000000180; 000000000036.650000;000000000000000005;09:04:01.483;1;2018-11-13;000006816340201;000000000502377;1;2018-11-13;000006816340183;000000000502378;2;0;00000115;00000003
2018-11-13;CCMX18                                            ;0000000190; 000000000036.650000;000000000000000001;09:06:31.695;1;2018-11-13;000006816340240;000000000502767;1;2018-11-13;000006816340183;000000000502768;2;0;00000003;00000003
2018-11-13;CCMX18                                            ;0000000200; 000000000036.700000;000000000000000002;09:10:22.489;1;2018-11-13;000006816340273;000000000503320;1;2018-11-13;000006816339869;000000000503321;2;0;00000003;00000386
2018-11-13;CCMX18                                            ;0000000210; 000000000036.750000;000000000000000002;09:13:31.894;1;2018-11-13;000006816340301;000000000503716;1;2018-11-13;000006816340285;000000000503717;2;0;00000093;00000010
2018-11-13;CCMX18                                            ;0000000220; 000000000036.750000;000000000000000001;09:15:54.127;1;2018-11-13;000006816340337;000000000504224;1;2018-11-13;000006816340306;000000000504225;2;0;00000093;00000115
2018-11-13;CCMX18                                            ;0000000260; 000000000036.800000;000000000000000002;09:18:40.400;1;2018-11-13;000006816340391;000000000505101;1;2018-11-13;000006816339938;000000000505102;2;0;00000115;00000010
2018-11-13;CCMX18                                            ;0000000250; 000000000036.800000;000000000000000003;09:18:40.400;1;2018-11-13;000006816340391;000000000505099;1;2018-11-13;000006816339884;000000000505100;2;0;00000115;00000115
2018-11-13;CCMX18                                            ;0000000270; 000000000036.790000;000000000000000002;09:18:54.521;1;2018-11-13;000006816340395;000000000505157;1;2018-11-13;000006816340394;000000000505158;2;0;00000115;00000003
2018-11-13;CCMX18                                            ;0000000290; 000000000036.830000;000000000000000001;09:21:11.606;1;2018-11-13;000006816340438;000000000505762;1;2018-11-13;000006816340436;000000000505763;2;0;00000003;00000010
2018-11-13;CCMX18                                            ;0000000520; 000000000036.800000;000000000000000006;09:39:34.837;1;2018-11-13;000006816340915;000000000510252;1;2018-11-13;000006816340559;000000000510253;2;0;00000003;00000058

Obs: In the result, the line delimiter is ', and the column delimiter is ;. But only when I play the code, you can see the line delimiter '.

  • What type of filter you need to make?

1 answer

1


TL;DR
If I understand correctly, you want to read the file and then select lines in which a certain word appears in a certain column. I took a part of the text you put in the question I put the word stackoverflow in 3 rows of column 1 (second column) to use in the filter, let’s consider this stretch as our archetype csv. Both to read and to filter we will use the pandas.

import io
import pandas as pd

csv = '''
RH NEG                 2018-11-13 2018-11-13 002095584
2018-11-13;heberteste                                            ;0000000010; 000000000128.950000;000000000000000002;09:52:04.625;1;2018-11-13;000006816341074;000000000513284;2;2018-11-13;000006816341042;000000000513285;2;0;00000088;00001130
2018-11-13;stackoverflow                                            ;0000000070; 000000000128.500000;000000000000000001;10:29:29.292;1;2018-11-13;000006816341437;000000000524369;2;2018-11-13;000006816341463;000000000524370;1;0;00000003;00000107
2018-11-13;heberteste                                            ;0000000090; 000000000128.500000;000000000000000001;10:34:28.447;1;2018-11-13;000006816341499;000000000526119;2;2018-11-13;000006816341500;000000000526120;1;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000100; 000000000128.050000;000000000000000001;10:43:51.211;1;2018-11-13;000006816341514;000000000530164;2;2018-11-13;000006816341319;000000000530165;1;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000130; 000000000128.400000;000000000000000001;11:20:18.817;1;2018-11-13;000006816341940;000000000545815;1;2018-11-13;000006816341855;000000000545816;2;0;00000088;00000003
2018-11-13;stackoverflow                                            ;0000000150; 000000000127.600000;000000000000000002;11:36:13.283;1;2018-11-13;000006816342069;000000000554070;2;2018-11-13;000006816342139;000000000554071;1;0;00000107;00000003
2018-11-13;heberteste                                            ;0000000190; 000000000128.000000;000000000000000001;11:51:35.790;1;2018-11-13;000006816342313;000000000559841;1;2018-11-13;000006816342289;000000000559842;2;0;00000088;00000107
2018-11-13;heberteste                                            ;0000000200; 000000000128.000000;000000000000000001;11:54:43.262;1;2018-11-13;000006816342357;000000000561090;1;2018-11-13;000006816342289;000000000561091;2;0;00000088;00000107
2018-11-13;stackoverflow                                            ;0000000210; 000000000127.600000;000000000000000001;12:59:21.065;1;2018-11-13;000006816342824;000000000594427;2;2018-11-13;000006816342851;000000000594428;1;0;00000003;00000088
2018-11-13;heberteste                                            ;0000000230; 000000000127.400000;000000000000000001;13:01:31.207;1;2018-11-13;000006816340294;000000000595852;2;2018-11-13;000006816342866;000000000595853;1;0;00000003;00000115
'''

# Lendo o csv 
df = pd.read_csv(io.StringIO(csv), skiprows=[0], sep=';', header=None)

# Apresentand o df
print(df)

Output (Fragment):

           0                                                  1    2       3   \
0  2018-11-13  heberteste                                    ...   10  128.95   
1  2018-11-13  stackoverflow                                 ...   70  128.50   
2  2018-11-13  heberteste                                    ...   90  128.50   
3  2018-11-13  heberteste                                    ...  100  128.05   
4  2018-11-13  heberteste                                    ...  130  128.40   
5  2018-11-13  stackoverflow                                 ...  150  127.60   
.....

Now let’s create a new DataFrame only with lines where the word "stackoverflow" appears. `

# Filtrando
s = 'stackoverflow'
df_filtered = df[df[1].str.contains(s)]

# Apresentado o resultado
print(df_filtered)

We use contains here why in the second column has a large amount of spaces, but could be tb an absolute equality, for example df[df[1]==s]

Output (Fragment):

           0                                                  1    2      3   \
1  2018-11-13  stackoverflow                                 ...   70  128.5   
5  2018-11-13  stackoverflow                                 ...  150  127.6   
8  2018-11-13  stackoverflow                                 ...  210  127.6   

See working on repl.it.

  • Hi Sidon, thank you very much, this explanation was excellent. But my file is in TXT, would you have to at least pass it to csv? I’ve attached a link to the file. If you’re not going to abuse it, you can help me by basing it on the txt file. Thank you very much.

  • In fact a file .csv is a file of the type txt with a specific formatting, so you don’t have to do anything. I took your text and made a test, I noticed that I made an error in reading the file, already corrected in the answer and in the repl it.. Change the read command from the df = pd.read_csv(txt, skiprows=[1], sep=';', header=None) for df = pd.read_csv(txt, skiprows=[0], sep=';', header=None) and take the test again.

  • If it has become obscure for you to know what has changed, pay attention to skiprows[1] for skiprows[0] I was ignoring the second line of the file, but the line that has to be ignored is the first, which escapes from the pattern of the others.

  • Hi Good evening. Wow, now it worked. Thank you very much. Abs

  • I am glad to know that it worked, consider giving the acceptance in the reply (Green tick next to the voting arrows) :-)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.