簡體   English   中英

文本文件轉換器(替換生詞)

[英]Text file Converter (replacing unknown words)

我開始玩 Python 並像 3 周前一般編程,所以要溫和;)

我嘗試做的是按照我希望的方式轉換文本文件,文本文件具有相同的模式,但我想替換的詞是未知的。 所以程序必須首先找到它們,設置一個模式然后將它們替換為我想要的單詞。

For example:
xxxxx
xxxxx
Line3 - word - xxxx xxxx
xxxxx xxxx
word
word
xxxx word

Legend:
xxxxx = template words, present in every file
word = random word, our target

我能夠本地化單詞的第一次出現,因為它總是出現在文件的同一個地方,從那時起它隨機出現。

我的代碼:


f1 = open('test.txt', 'r')
f2 = open('file2.txt', 'w')

pattern = ''
for line in f1.readlines():
    if line.startswith('Seat 1'):
        line = line.split(' ', 3)
        pattern = line[2]
        line = ' '.join(line)
        f2.write(line)
    elif pattern in line.strip():
        f2.write(line.replace(pattern, 'NewWord'))
    else:
        f2.write(line)
f1.close()
f2.close()

這段代碼不起作用,怎么了?

歡迎來到 Python 的世界!

我相信您走在正確的軌道上並且非常接近正確的解決方案,但是我看到了一些可能導致您的程序無法按預期運行的潛在問題。

  1. 如果您想查看一個字符串是否等於另一個字符串,我會使用==而不是is (有關更多信息,請參見此答案)
  2. 讀取文件時,行以\n結尾,這意味着您的可變line可能永遠不會匹配您的單詞。 要解決此問題,您可以使用 strip,它會自動刪除前導和尾隨的“空格”字符(如空格或換行符)
elif line.strip() == pattern:
  1. 這不是一個真正的問題,而是一個建議,因為您才剛剛起步。 處理文件時,強烈建議使用 Python 提供的with語句(參見問題和/或教程

更新:

我看到你可能將單詞 be 包含在該行中,而不是按照第 1 點中的建議使用== ,你可以使用 in,但你需要顛倒順序,即

elif pattern in line:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM