![](/img/trans.png)
[英]How can I extract that list of denominator and numerator from a SymPy equation?
[英]How can I extract numerator and denominator from a list w/ python?
我有一個包含分數列表的文件,我想簡化它們。 列表如下所示:
124/246
71/69
2574/3850
...
為了簡化我嘗試使用以下代碼提取分子和分母,但它似乎只提取最后一位數字(f1 和 f2 是我打開的文件,我在其中讀寫,而 Simplify 是先前定義的函數):
while f1.readline() != "":
i = 1
while f1.read(1) != "/":
num = f1.read(i)
i += 1
den = f1.read(i)
num, den = Simplify(int(num), int(den))
f2.write(str(num) + "/" + str(den) + "\n")
我會給予一些指導。 非常感謝:)
您使這比必要的復雜得多,並且在此過程中做錯了很多事情。
當您在if
條件下調用f1.readline()
或f1.read(1)
時,它會使用文件中的該行或字符。 下一個文件操作將從停止的地方讀取,它不會返回 go 並再次處理同一行。 因此,除非您將文件 position (使用f1.tell()
)然后將 go 保存回它(使用f1.seek()
),否則您不能使用此模式來計算/
之前的字符數然后讀取它們再次。
但是沒有必要計算任何東西。 只需閱讀該行並使用split()
將其分為分子和分母。
for line in f1:
line = line.strip() # remove newline
num, den = line.split('/')
num, den = Simplify(int(num), int(den))
f2.write(str(num) + "/" + str(den) + "\n")
我會以不同的方式處理這個問題。
首先,我會從 f1 獲取每一行並將其存儲在一個列表中。 然后,我將遍歷這個列表並使用split()
function 來獲取分子和分母。 最后,我會將它們寫入 f2。
這是一些可以做到這一點的代碼:
lines = f1.readlines() # Store all the lines in a list
for fraction in lines:
split_fraction = fraction.split("/") # Split the fraction into a list containing the numerator and denominator
num = split_fraction[0]
den = split_fraction[1]
num, den = Simplify(int(num), int(den))
f2.write(str(num) + "/" + str(den) + "\n")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.