回答
這是您可以使用的腳本。主函數中的代碼只是爲了讓您選擇一個文件(或者如果給出,可以將其作爲命令行參數選取)。然後調用crop_file函數,通過打開文件,將數據讀到第一個空行到內存中,關閉文件,然後將存儲的數據寫入同一個文件,如果確認需要剩餘的行被刪除。
讓我知道如果您有任何關於代碼的問題。
#!/usr/bin/python
import os, csv, sys, Tkinter, tkFileDialog as fd
# stop tinker shell from opening as only needed for file dialog
root = Tkinter.Tk()
root.withdraw()
def crop_file(in_path):
# read file into memory
file_obj = open(in_path, 'rb')
reader = csv.reader(file_obj, delimiter='\t')
data = []
for row in reader:
if not row or not any(row):
break #stop at empty row
else:
data.append(row)
file_obj.close()
print 'Found', len(data), 'rows of data without empty lines.'
conf = raw_input('delete remaining lines? (Y|N): ').upper()[0]
if conf == 'Y':
# write data to file
file_obj = open(in_path, 'wb')
writer = csv.writer(file_obj)
writer.writerows(data)
file_obj.close
def main():
in_path = None
prog_name = sys.argv[0]
# check if in_path are inlcuded as cmd line args...
if len(sys.argv) > 1:
in_path = sys.argv[1]
if not os.path.exists(in_path):
print 'Usage:', prog_name, '[file_path>]'
print 'cannot find the file provided for file_path:\n', in_path
sys.exit("Error - invalid excel_file_path arg")
else:
try:
# set current working directory to user's my documents folder
os.chdir(os.path.join(os.getenv('userprofile'),'documents'))
except:
pass
# ask user for path to file...
while not in_path:
print "Please select the file to read data from ..."
try:
in_path = fd.askopenfilename()
except:
print 'Error selecting file.'
if not in_path:
cont = raw_input('Do you want to continue? (Y|N): ').upper()[0]
if cont == 'N':
sys.exit("Error - unable to select input file")
crop_file(in_path)
if __name__ == '__main__':
main()
這段代碼認識到我有33行有條目,但在我的.csv中實際上有26行,然後是3空白行,然後是5行數據(這些是要刪除的行)。這樣它才能選擇前26行並刪除其餘行? – gigawatts
@ gigawatts這就是它爲我所檢查的測試數據所做的。你可以將你的數據發佈到像hastebin這樣的地方,然後給我一個鏈接,然後我會根據你的數據嘗試它,並做出修改(顯然如果有任何個人信息等,你應該首先匿名數據)。 – ChrisProsser
@ gigawatts我懷疑這與我的測試文件和你的測試文件之間的空行差別很大。你的空白行字面上是空的還是包含空格等? – ChrisProsser
- 1. Perl CSV刪除行只出現一次
- 2. 查找並刪除列表中指定元素的最後一次出現[racket]
- 3. 在第一次出現數字後刪除所有內容php
- 4. 在Python中查找和刪除行並輸出結果
- 5. 刪除每個文件的第一行後合併CSV文件
- 6. 的Python ::刪除所有出現,直到第一空間
- 7. 如何刪除file1中出現一次或多次在python中file2的行?
- 8. 如何查找data.frame中元素的第一次和最後一次出現?
- 9. 使用sed查找並替換第二次出現的行首?
- 10. 根據字符串查找並刪除文件中的行但保留最後一次出現
- 11. Python CSV跳過或刪除第二行
- 12. 刪除空間中的空間第一次和最後一次android?
- 13. ksh shell腳本在字符串中查找_的第一次出現,並刪除所有內容,直到
- 14. 第二次出現字符串中的空格後刪除文本
- 15. 刪除Python中的csv行
- 16. 在SQL數據庫中查找元素的第一次出現
- 17. 在excel中查找第一次出現的X個失蹤日
- 18. 如何刪除一個在.CSV文件中第二次出現的模式後的其餘記錄
- 19. 刪除重複多次,但留下第一次出現的ID
- 20. 在最後一次出現字符後刪除字符串
- 21. 查找出現一次
- 22. SQL服務器找出第一次出現與最後一次出現並取代它們
- 23. 第一次和第二次在PostgreSQL中出現行ID
- 24. 從字符串中刪除單詞的第一次出現?
- 25. SQL Server中刪除一切從第二次出現到結束
- 26. 如何刪除數組中第一次出現的值?
- 27. 給定的值的列表中刪除第一次出現
- 28. 刪除斜線的第一次出現在PHP
- 29. Python:用空格替換文件中的重複行,但不是第一次/最後一次出現
- 30. 如何刪除字符串中第一次出現重複的Python?
通過輸入代碼。 (你有什麼試過的?你的代碼到目前爲止在哪裏?) – Doorknob
如果你不給我們任何代碼來使用,我們如何給你使用? – iCodez
有幾種方法可以做到這一點,如果文件不是太大,我建議將所有數據讀入一個變量,關閉文件,然後逐行寫入相同的文件名,而行不是空的,然後弓大是你需要處理的文件? – ChrisProsser