我有一系列的.txt檔案,我想去掉前綴和后綴,使它們更容易閱讀(并做進一步的分析)
一個假名稱將是 "Test_abcdef_000001.txt"、"Test_abcdef_000002.txt "或 "Test_abcdeft_000001.txt"。為了去除 "Test_"和"_000001.txt "部分,我使用了rstrip()和lstrip(),如下所示:
for file in os.listdir(directory):
if file.endswith(".txt") 。
if file.startedwith("Test"):
print('old name is: ' file '
')
file = file.lstrip('Test_')
for i in range(20)。
if file.endswith(str(i).zfill(6) ' .txt')。
file_1 = file.rstrip('_' str(i).zfill(6) ' .txt' )
print('New name is: '/span> file_1 '
')
第一個for回圈是掃描目錄中的所有檔案。第二個帶i的for回圈是為了處理_000001或_000002的測驗名稱。
因此,例如,有以下4個測驗名稱,我希望有4個 "新 "的測驗名稱:
Test_abcdtt_000001.txt --> abcdtt
Test_abct_000001.txt --> abct
Test_defg_000001.txt --> defg
Test_tcty_000001.txt --> tcty
然而,在實際測驗中,我有如下結果
Test_abcdtt_000001.txt --> abcd
Test_abct_000001.txt --> abc
Test_defg_000001.txt --> defg
Test_tcty_000001.txt --> cty
換句話說,"_"旁邊的所有 "t "字符都丟失了,這是不理想的。對于這個問題有什么意見/建議嗎?
感謝您的時間和支持。
作為參考。我在公司的電腦上使用 Python 3.7。所以請假設我不能將它升級到 3.9 和/或匯入任何花哨的庫。此外,我的一些檔案里面可能有_,例如Test_ab_ty_ui_000001.txt,對于這個,最終的結果應該是ab_ty_ui。
uj5u.com熱心網友回復:
也許可以嘗試使用re來匹配你想要的模式。
import re
prefix = "Test"。
# regex得到'Test_'和'_{digits}'之間的一切。
regex = rf"^{prefix}_(.*)_(d ).txt"
# 這也可以用glob.glob(f"{directory}/{prefix}*")來代替,這樣更有效率。
for file_name in os.listdir(directory):
match = re.match(regex, file_name)
if match:
print(match.group()[0])
uj5u.com熱心網友回復:
因此,例如,有了以下4個測驗名稱,我希望有4個 "新 "的測驗名稱:
Test_abcdtt_000001.txt --> abcdtt
Test_abct_000001.txt --> abct
Test_defg_000001.txt --> defg
Test_tcty_000001.txt --> tcty
names = ['Test_ab_ty_ui_000001.txt','Test_abcdtt_000001. txt', 'Test_abct_000001.txt', 'Test_defg_000001.txt', 'Test_tcty_000001.txt'] new_names = [] for name in names: parts = name.split('_') new_name = '_'.join(parts[1:-1] ) new_names.append(new_name) print(new_names)輸出
['ab_ty_ui', 'abcdtt', 'abct', 'defg', 'tcty']轉載請註明出處,本文鏈接:https://www.uj5u.com/net/307300.html
標籤:
