【问题标题】:How do I return the full string based on the first 3 characters matching?如何根据前 3 个字符匹配返回完整字符串?
【发布时间】:2021-02-12 02:00:51
【问题描述】:

我有一个目录 (client_dir),其中包含一个名为“XXX - 长客户端名称”的文件夹

我想将文件夹的全名(“XXX - 长客户端名称”)保存为名为 client_name 的变量。我可以通过匹配前 3 个字符 (XXX) 来搜索“XXX - Long client name”。我在其他地方找到了这 3 个字符。

我尝试使用 re 模块,但我不知道如何获取实际的完整字符串。它只返回“XXX”。

for closeout in os.listdir(closeout_dir):
    project_id = closeout[:8]
    client = project_id[0:3] 
    for x in os.listdir(client_dir):
        client_name = re.search(client,x)

    print(client_name)
    print(type(client_name))

输出:

<re.Match object; span=(0, 3), match='XXX'>
<class 're.Match'>
XXX

我遇到的另一个问题是,当我向client_dir 添加另一个名为“YYY-另一个客户端名称”的文件夹时,它再也找不到我的“XXX - 长客户端名称”文件夹了。输出是:

None
<class 'NoneType'>

【问题讨论】:

标签: python python-re


【解决方案1】:
for closeout in os.listdir(closeout_dir):
    project_id = closeout[:8]
    client = project_id[0:3]
    for x in os.listdir(client_dir):
        client_name = re.search(client,x)
        print(x)                # Actual full string
        print(client_name)
        print(type(client_name))
  1. 查看我的代码,x 是实际的完整字符串,无需在 re.search 中返回。
  2. 您需要缩进 print 语句才能在 for 循环中运行它。 如果不缩进,只会打印 for 循环的最后一个值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-02
    • 2018-12-11
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多