Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 只返回正则表达式一次_Python 3.x_Regex - Fatal编程技术网

Python 3.x 只返回正则表达式一次

Python 3.x 只返回正则表达式一次,python-3.x,regex,Python 3.x,Regex,我试图让正则表达式只打印一次结果。有什么建议吗?因为我希望代码读取整个文本文件,但是有许多日期是相同的,但是我只希望代码只返回一次该日期 代码: 文本文件: No. Time Source Destination Protocol Length Info 2 2021-02-12 13:33:12.206424 192.168.1.151 172.217.

我试图让正则表达式只打印一次结果。有什么建议吗?因为我希望代码读取整个文本文件,但是有许多日期是相同的,但是我只希望代码只返回一次该日期

代码:

文本文件:

No.     Time                          Source                Destination           Protocol Length Info
      2 2021-02-12 13:33:12.206424    192.168.1.151         172.217.10.46         QUIC     1392   Initial, DCID=e4267bae554f387d, PKN: 1, CRYPTO, PADDING

Frame 2: 1392 bytes on wire (11136 bits), 1392 bytes captured (11136 bits) on interface \Device\NPF_{28AA034F-AC94-4D4A-9CA9-9AEA5D0EF2C1}, id 0
Ethernet II, Src: Micro-St_0e:cd:34 (00:d8:61:0e:cd:34), Dst: Verizon_fb:8b:82 (20:c0:47:fb:8b:82)
Internet Protocol Version 4, Src: 192.168.1.151, Dst: 172.217.10.46
User Datagram Protocol, Src Port: 57189, Dst Port: 443
QUIC IETF

No.     Time                          Source                Destination           Protocol Length Info
      3 2021-02-12 13:33:12.225610    172.217.10.46         192.168.1.151         QUIC     1392   Initial, SCID=e4267bae554f387d, PKN: 1, ACK, CRYPTO, PADDING

Frame 3: 1392 bytes on wire (11136 bits), 1392 bytes captured (11136 bits) on interface \Device\NPF_{28AA034F-AC94-4D4A-9CA9-9AEA5D0EF2C1}, id 0
Ethernet II, Src: Verizon_fb:8b:82 (20:c0:47:fb:8b:82), Dst: Micro-St_0e:cd:34 (00:d8:61:0e:cd:34)
Internet Protocol Version 4, Src: 172.217.10.46, Dst: 192.168.1.151
User Datagram Protocol, Src Port: 443, Dst Port: 57189
QUIC IETF

No.     Time                          Source                Destination           Protocol Length Info
      4 2021-02-12 13:33:12.225989    192.168.1.151         172.217.10.46         TLSv1.2  146    Application Data
No.     Time                          Source                Destination           Protocol Length Info
      4 2021-04-12 13:33:12.225989    192.168.1.151         172.217.10.46         TLSv1.2  146    Application Data
No.     Time                          Source                Destination           Protocol Length Info
      4 2021-06-12 13:33:12.225989    192.168.1.151         172.217.10.46         TLSv1.2  146    Application Data
No.     Time                          Source                Destination           Protocol Length Info
      4 2021-06-12 13:33:12.225989    192.168.1.151         172.217.10.46         TLSv1.2  146    Application Data
代码执行输出:

2021-02-12
2021-02-12
2021-02-12
2021-02-12
2021-02-12
2021-02-12
2021-04-12
2021-06-12
2021-06-12
2021-02-12
2021-04-12
2021-06-12
期望代码执行输出:

2021-02-12
2021-02-12
2021-02-12
2021-02-12
2021-02-12
2021-02-12
2021-04-12
2021-06-12
2021-06-12
2021-02-12
2021-04-12
2021-06-12

下面是一个如何获取文件中所有唯一日期的简单示例

基本上,这是一个4阶段的过程:

  • 将要搜索的模式存储为字符串
  • 打开文件并获取所有文本
  • 使用
    re.findall()
    获取与模式匹配的所有文本
  • 使用
    set()
    仅保留唯一匹配项
  • 重新导入
    #制作图案
    模式='(\d\d\d-\d\d-\d\d)'
    #打开文件并将所有文本读入变量
    打开('wireshark.txt')作为文件:
    text=file.read()
    #在文本中搜索与模式匹配的任何内容
    matches=re.findall(模式、文本)
    #打印唯一的匹配项
    打印(套(匹配))
    

    这里的关键是
    re.findall()
    (一次搜索多个匹配项)和
    set()
    (以消除重复项。

    break?我对python不太熟悉我不知道break是什么意思我不知道,但这对我来说可能很有用。然而,我的意思是让正则表达式在整个文本文件中运行,因为文件中有不同的日期,但我不想让同一日期与t一起反复打印还有不同的日期。我编辑了这个问题,这样你就可以看到我所说的mean@duynguyen我现在编辑了我的答案——我想这更符合你的要求。