【发布时间】:2019-05-22 15:46:05
【问题描述】:
我的代码遇到了一个大问题。
TL;DR:在几次 cmet 之后,我决定将整个代码发布在这里:
https://repl.it/repls/AustereShinyBetatest
这是我的代码:
def highlight_nonmodified(content: str) -> str:
regex = re.compile(r'(?s)(\{.*?[^\}]+\})', re.I | re.S)
replace = r'#\1'
content = regex.sub(replace, content)
return content
def get_line(string_t: str, original: str) -> int:
original = original.splitlines(True)
for (i, line) in enumerate(original, 1):
if string_t[1:] in line:
return i
return -1
def highligh_merge(original: str, modified: str) -> str:
for line in modified.splitlines(True):
if line.startswith('#'):
numer = get_line(line, original)
error = r"#Tag not supported at line{0}\n".format(numer)
error = error + line
modified = modified.replace(line, error)
我的问题是会发生以下情况:
Textfile.txt(原件):
1. Here goes some text. {tag} A wonderful day. It's soon cristmas.
2. Happy 2019, soon. {Some useful tag!} Something else goes here.
3. Happy ending. Yeppe! See you.
4.
5 Happy KKK!
6. Happy B-Day!
7
8. Universe is cool!
9.
10. {Tagish}.
11.
12. {Slugish}. Here goes another line. {Slugish} since this is a new sentence.
13.
14. endline.
修改后的.txt:
Here goes some text. A wonderful day. It's soon cristmas.
Happy 2019, soon. #{Some useful tag!} Something else goes here.
Happy ending. Yeppe! See you.
Happy KKK!
Happy B-Day!
Universe is cool!
.
#Error: Tag not supported at line-1\n#{Slugish}. Here goes another line. #{Slugish} since this is a new sentence.
endline.
我似乎无法获得精确的行号和行比较,我在这里做错了什么,我显然是存储了两个副本,原始和修改,然后我选择然后我尝试选择通过逐行循环从原始文本中取出行号。但仍然没有任何成功,这是否可能。提前非常感谢!
【问题讨论】:
-
您能指出修改后的文件中的“错误”和“没有成功”吗?只是说它是错误的可能实际上是正确的,但这并不能帮助我们帮助您。
-
请参阅 original.txt 和 modified.txt 以获得说明。
-
我看到它们是不同的。但哪些差异是“错误的”,哪些不是?
-
我已经手动添加了行,所以如果某些标签没有被删除,我想在 original.txt 中写出它所在的行号
-
不清楚
highlight_nonmodified和highligh_merge这两个函数是如何使用的,或者以什么顺序使用;我会澄清你的问题,包括一个小驱动程序,准确地展示你如何接受一些样本输入,处理它,然后把它吐出来。这也有助于澄清 Modified.txt 是“错误的输出”,而 End result 是“期望的输出”。