在字符串上使用正则表达式时,我将来会收到警告。 finditer 应该使用多个标签并返回字典

2024-01-07

这是我下面的代码。当我运行它时,我收到错误:

c:\Users\renne\Documents\Code\Text Analysis\Assignment1.1C.py:27:
FutureWarning:位置 54 可能存在嵌套集
对于项目在
re.finditer("(?P<host>\d{3}[.]\d{3}[.]\d{3}[.]\d{3})(?P<user_name>[[\w]+\d{4}]|[-])(?P<time>\d{2}/\w+/\d{4}:\d{2}:\d{2}:\d{2} -\d{4})(?P<request>[A-Z]+ \S* HTTP/\d[.]\d)", logdata):

我不知道如何解决这个问题。我检查了我的代码几次,但无法找出问题所在。

我使用测试数据中的随机字符串而不是整个文本文件来使测试更容易。当这不起作用时改变logdata = '...'来阅读。

import re

logdata = '146.204.224.152 - feest6811 [21/Jun/2019:15:45:24 -0700] "POST /incentivize HTTP/1.1" 302 4622'

dict = {}
expression = """
    (?P<host>\d{3}[.]\d{3}[.]\d{3}[.]\d{3})
    (?P<user_name>[[\w]+\d{4}]|[-])
    (?P<time>\d{2}/\w+/\d{4}:\d{2}:\d{2}:\d{2} -\d{4})
    (?P<request>[A-Z]+ \S* HTTP/\d[.]\d)
"""

for item in re.finditer("(?P<host>\d{3}[.]\d{3}[.]\d{3}[.]\d{3})(?P<user_name>[[\w]+\d{4}]|[-])(?P<time>\d{2}/\w+/\d{4}:\d{2}:\d{2}:\d{2} -\d{4})(?P<request>[A-Z]+ \S* HTTP/\d[.]\d)", logdata):
    print(item.groupdict()['host'])

print(item.groupdict())

您收到警告是因为一对未转义的方括号内有一对未转义的方括号。请参阅re文档:

支持嵌套集合和集合操作,如下所示Unicode 技术标准 #18 https://unicode.org/reports/tr18/将来可能会添加。这会改变语法,因此为了促进这种改变未来警告 https://docs.python.org/3/library/exceptions.html#FutureWarning暂时将在模棱两可的情况下提出。这包括以文字开头的集合'['或包含文字字符序列'--', '&&', '~~', and '||'。为了避免警告,请使用反斜杠转义它们。

The [[\w]+\d{4}]错误,因为它匹配一个或多个[或单词字符(带有[[\w]+)然后是四位数字(\d{4}),然后是文字]字符(与])。您需要删除此处的所有方括号。

您可以使用

r'(?P<host>\d{3}\.\d{3}\.\d{3}\.\d{3}) - (?P<user_name>\w+\d{4}|-) \[(?P<time>\d{2}/\w+/\d{4}:\d{2}:\d{2}:\d{2} -\d{4})] "(?P<request>[A-Z]+ \S* HTTP/\d\.\d)'

See the 正则表达式演示 https://regex101.com/r/nAOxqE/1.

如果您在其他场景中遇到此错误,您可能需要以不同的方式修复它:

  • 当你需要匹配文字时[ or ]并使用它们方括号内, 逃脱]并且不要逃避[. E.g. [a-zA-Z[\]]匹配 ASCII 字母,[ or ]。您还可以保留]如果放在字符类的开头则未转义:[]A-Za-z[] = [a-zA-Z[\]] = [][a-zA-Z].
  • 当你想匹配文字时[ or ] 方括号之外(字符类),你需要逃脱[并保留]没有逃脱。例如。\[[0-9]+]火柴[,然后是一位或多位数字,然后是] char.
  • 请注意,在字符类中使用单个简写或字符被认为是不好的做法,并且可能会导致误解,进而可能导致此类问题。代替[\w]+,始终使用\w+.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在字符串上使用正则表达式时,我将来会收到警告。 finditer 应该使用多个标签并返回字典 的相关文章

  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • SQLALchemy .query:类“Car”的未解析属性引用“query”

    我有一个这里已经提到的问题https youtrack jetbrains com issue PY 44557 https youtrack jetbrains com issue PY 44557 但我还没有找到解决方案 我使用 Pyt
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • NotImplementedError:无法将符号张量 (lstm_2/strided_slice:0) 转换为 numpy 数组。时间

    张量流版本 2 3 1 numpy 版本 1 20 在代码下面 define model model Sequential model add LSTM 50 activation relu input shape n steps n fe

随机推荐