如何从字符串中读取字符?

时间:2019-10-14 15:40:07

标签: python

我有python代码,其中有一个输入参数。另一个应用程序将传递参数。这是要求。参数将像这样传递。

  1. abc_201901.txt
  2. abc.201901.txt
  3. abcde_201901.txt

从以上参数中,我需要提取“ abc_”或“ abc”。或“ abcded_”,然后转到目录并搜索文件。

我很难找到可以做到这一点的功能。

2 个答案:

答案 0 :(得分:1)

如果仅使用“ _”和“。”,则可以使用re.search:

"_readableState":{ 
      "objectMode":true,
      "highWaterMark":16,
      "buffer":{ 
         "head":null,
         "tail":null,
         "length":0
      },
      "length":0,
      "pipes":null,
      "pipesCount":0,
      "flowing":null,
      "ended":false,
      "endEmitted":false,
      "reading":false,
      "sync":false,
      "needReadable":true,
      "emittedReadable":false,
      "readableListening":false,
      "resumeScheduled":false,
      "destroyed":false,
      "defaultEncoding":"utf8",
      "awaitDrain":0,
      "readingMore":false,
      "decoder":null,
      "encoding":null
   },
   "readable":true,
   "domain":null,
   "_events":{ 

   },
   "_eventsCount":2,
   ....
   ....
   ....

祝你好运

---校正---

最好使用正则表达式获取除数字以外的所有字符:

import re

a = "test.123.txt"
regex = r"([0-9].*)"

m = re.search(regex, a) # match from any digit to end
m.group(1) # ->'123.txt'

答案 1 :(得分:1)

可能的切片解决方案

def extract_prefix(filename):
    # list of separators
    separators = ['.', '_', '-']
    for sep in separators:
        # rid off file extension
        if sep in filename[:-4]:
            # slicing, including sep (+1)
            return filename[:filename.find(sep) + 1]
    return None

a = "test_123.txt"
prefix = extract_prefix(a)
print(prefix)