繁体   English   中英

查找特定字符串并输出整行 Python

[英]Find specific string and output the whole line Python

我有以下输入txt文件:

17,21.01.2019,0,0,0,0,E,75,meter tamper alarm
132,22.01.2019,64,296,225,996,A,,
150,23.01.2019,63,353,351,805,A,,
213,24.01.2019,64,245,244,970,A,,
201,25.01.2019,86,297,364,943,A,,
56,26.01.2019,73,678,678,1437,A,,
201,27.01.2019,83,654,517,1212,A,,
117,28.01.2019,58,390,202,816,A,,
69,29.01.2019,89,354,282,961,C,,
123,30.01.2019,53,267,206,852,A,,

需要制作一个可以解析文件的python程序。 我需要找到所有不包含 A 或 C 的行并将这些行输出到一个新文件中。 尝试了几个正则表达式后,我完全被困住了:(你能帮我吗?

尝试

with open('filename') as f:
    for line in f.readlines():
        if 'A' not in line or 'C' not in line:
            print(line)

或者更好,因为您的文件内容似乎类似于 csv(逗号分隔值)格式,请使用Pandas进行更好的操作

读取文件

import pandas as pd
df = pd.read_csv('filename', header=None, sep=',')

     0           1   2    3    4     5  6     7                   8
0   17  21.01.2019   0    0    0     0  E  75.0  meter tamper alarm
1  132  22.01.2019  64  296  225   996  A   NaN                 NaN
2  150  23.01.2019  63  353  351   805  A   NaN                 NaN
3  213  24.01.2019  64  245  244   970  A   NaN                 NaN
4  201  25.01.2019  86  297  364   943  A   NaN                 NaN
5   56  26.01.2019  73  678  678  1437  A   NaN                 NaN
6  201  27.01.2019  83  654  517  1212  A   NaN                 NaN
7  117  28.01.2019  58  390  202   816  A   NaN                 NaN
8   69  29.01.2019  89  354  282   961  C   NaN                 NaN
9  123  30.01.2019  53  267  206   852  A   NaN                 NaN

输出

print(df[~df[6].str.contains('A|C', regex=True)])

    0           1  2  3  4  5  6     7                   8
0  17  21.01.2019  0  0  0  0  E  75.0  meter tamper alarm

尝试:

with open(r'file.txt', 'r') as f:
    for line in f:
        if 'A' not in line or 'C' not in line:
            print(line)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM