1

我从这个问题read.py下面修改了以下 python-regex 文件。在同一目录中,我还有另一个名为 1.txt 的文本文件。

读取.py

import re
with open ("1.txt", "r") as text:
    data = text.read()
print( re.sub(r"(.)\1*", lambda x: "{}{}".format( x.group(1), len(x.group())),  text) )

1.txt

UUBBBRRLLLBBBDDD

我试图在结构中读取1.txtinto的内容,然后得到与将文本插入代码相同的结果(见下文)。textread.pyread2.py

读取2.py

import re
text = "UUBBBRRLLLBBBDDD"
print( re.sub(r"(.)\1*", lambda x: "{}{}".format( x.group(1), len(x.group())),  text) )

但是,如果我运行,read.py我总是会收到以下错误:

Traceback (most recent call last):
  File "axios.py", line 5, in <module>
    print( re.sub(r"(.)\1*", lambda x: "{}{}".format( x.group(1), len(x.group())),  text) )
  File "/usr/lib/python3.8/re.py", line 208, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object

我知道我应该1.txt作为一个变量来阅读,然后在摘录中阅读print( re.sub(r"(.)\1*", lambda x: "{}{}".format( x.group(1), len(x.group())), text) )read.py

但我不明白为什么我没有阅读它并导致错误,我无法直接read.pyread1.py. 我已经用谷歌搜索了它,但没有找到任何涉及module regex,read并且print它们应该在同一个 python 文件中工作的东西read.py

4

1 回答 1

1

“文本”变量不应该只是“数据”吗?这有效: print(re.sub(r"(.)\1*", lambda x: "{}{}".format(len(x.group()), x.group(1)), data))

“text”是一个<class '_io.TextIOWrapper'>(即类似文件的对象),它被读取然后关闭,而“data”是保存对字符串的引用的变量。

于 2020-01-04T20:36:31.183 回答