python如何搜索打印出以下内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python如何搜索打印出以下内容相关的知识,希望对你有一定的参考价值。

例如我在电脑G盘有很多文本文件,内容是类似以下
<ID>AAAA1111111</ID><Text>正常</Text><ID>BBCB1111111</ID><Text>正常</Text><ID>BCCB2222222</ID><Text>异常</Text><ID>AABA5454542</ID><Text>正常</Text>
我现在希望可以通过输入ID里面的内容,然后可以从这些文件中搜索并在屏幕打印出下面这种格式的内容,应该怎么写呢?
BCCB2222222——异常

filename = 'test.txt'
d = 
with open(filename, 'r') as file_to_read:
    line = file_to_read.readlines()
    l = line[0].replace('</ID><Text>','|').replace('</Text><ID>','|').replace('<ID>','').replace('</Text>','')
    l = l.split('|')
    for i in range(len(l)):
        if i%2 == 0:
            d[l[i]] = l[i+1]

while True:
    n = input('input index:')
    if n in d:
        print(d[n])
    else:
        print('input index do not exist!')

参考技术A

使用 Python 从 csv 文件中的字符串搜索中打印多列

【中文标题】使用 Python 从 csv 文件中的字符串搜索中打印多列【英文标题】:Print multiple columns from string search in csv file using Python 【发布时间】:2022-01-16 14:58:23 【问题描述】:

我有一个 csv 文件,下面的脚本搜索字符串“PROGRAM”并打印出该字符串所在列中的数据。虽然它只执行一次,但在其中找到了多个“PROGRAM”实例csv 文件,如何打印字符串出现的附加列?

import os
import csv
from pathlib import Path
from collections import defaultdict

search_str = "PROGRAM"

searchfile = open("Test_Process.csv", "r")
for line in searchfile:

index = line.find(search_str)
if (index != -1):
columns = defaultdict(list)
with open('Test_Process.csv') as f:
reader = csv.reader(f)
for row in reader:
for (i,v) in enumerate(row):
columns[i].append(v)
b=(columns[index])
for x in b[:]:
print (x)

【问题讨论】:

您需要修复代码中的缩进 【参考方案1】:

你真的应该只发布适当缩进的代码。

恕我直言,你不应该做什么:

str.find 不会为您提供 column 数字索引。它确实为您提供了第一次出现search_str 的索引(如果没有找到,则为-1)在搜索的字符串中(此处为line)。这不会导致您的程序出错,因为您使用的是defaultdict。 您的代码将 csv 文件多次加载到 dict 中 - 这不是很有效。

我建议你这样做:

import csv
from collections import defaultdict

# Reading csv-file columnwise into dict & identifying columns with search string
search_str = "PROGRAM"
relevant_columns = set()
with open("Test_Process.csv", "r") as file:
    reader = csv.reader(file)
    columns = defaultdict(list)
    for row in reader:
        for i, item in enumerate(row):
            columns[i].append(item)
            if search_str in item:
                relevant_columns.add(i)

# Printing the columns with search string
for col in sorted(relevant_columns):
    print(f"Printing items from column col:")
    for item in columns[col]:
        print(item)

评论:

第一个块将文件读入 dict,识别出现搜索字符串的列,并将它们收集到集合 relevant_columns。 第二个块打印结果,即带有搜索字符串的列。

【讨论】:

以上是关于python如何搜索打印出以下内容的主要内容,如果未能解决你的问题,请参考以下文章

python 侦听并打印出特定端口上收到的UDP数据包的内容。

python每日一练:0011题

如何在 node.js 中搜索字符串的流?

采用多线程和生产者消费者模式来实现对于一个目录以及所有子目录下的文件内容的搜索,打印出包含指定关键字的行.

从第二个字段逐行搜索模式并打印出与找到该模式的行对应的第一个字段

如何正确打印出带有“text/rtf”内容的 JTextPane 的硬拷贝?