Tôi có một bộ số [NDC - số thuốc] có
1. 8290-033010
2 trong đó. Tôi đang cố gắng đọc tệp, xóa 1. 8290-033010
2 và ghi các số vào một tệp mới. Bất kỳ sự giúp đỡ với điều này sẽ được đánh giá cao. Sử dụng PY 2.71. 68817-0134-50
2. 68817-0134-50
3. 68817-0134-50
Vấn đề là dấu gạch nối không phải lúc nào cũng ở cùng một vị trí.
1. 8290-033010
Nó thay đổi và có thể ở bất kỳ vị trí nào
with open['c:\NDCHypen.txt', 'r'] as infile,
open['c:\NDCOnly.txt', 'w'] as outfile:
replace["-", ""]
Hỏi ngày 5 tháng 10 năm 2013 lúc 19:03Oct 5, 2013 at 19:03
1
with open[r'c:\NDCHypen.txt', 'r'] as infile, \
open[r'c:\NDCOnly.txt', 'w'] as outfile:
data = infile.read[]
data = data.replace["-", ""]
outfile.write[data]
Để ngăn chặn việc chuyển đổi các kết thúc dòng [ví dụ: giữa
1. 8290-033010
4 và 1. 8290-033010
5], hãy mở cả hai tệp ở chế độ nhị phân: Pass 1. 8290-033010
6 hoặc 1. 8290-033010
7 dưới dạng arg 2 của Open.Đã trả lời ngày 5 tháng 10 năm 2013 lúc 19:08Oct 5, 2013 at 19:08
ptsptspts
74.5K19 Huy hiệu vàng102 Huy hiệu bạc174 Huy hiệu đồng19 gold badges102 silver badges174 bronze badges
3
Bạn có thể làm điều đó một cách dễ dàng với một kịch bản shell sẽ phải nhanh hơn so với việc triển khai Python. Trừ khi bạn có một cái gì đó nhiều hơn với tập lệnh, bạn nên đi với phiên bản script shell.
Tuy nhiên, với Python sẽ là:
with open['c:\NDCHypen.txt', 'r'] as infile, open['c:\NDCOnly.txt', 'w'] as outfile:
temp = infile.read[].replace["-", ""]
outfile.write[temp]
Đã trả lời ngày 5 tháng 10 năm 2013 lúc 19:06Oct 5, 2013 at 19:06
Neaglneaglneeagl
3401 Huy hiệu bạc13 Huy hiệu đồng1 silver badge13 bronze badges
2
Đôi khi chúng tôi muốn loại bỏ tất cả các lần xuất hiện của một ký tự khỏi một chuỗi. Có hai cách phổ biến để đạt được điều này.
Python loại bỏ ký tự khỏi chuỗi
- Sử dụng hàm thay thế chuỗi []
- Sử dụng hàm dịch []
Python loại bỏ ký tự khỏi chuỗi bằng cách sử dụng thay thế []
Chúng ta có thể sử dụng hàm thay thế chuỗi [] để thay thế một ký tự bằng một ký tự mới. Nếu chúng tôi cung cấp một chuỗi trống làm đối số thứ hai, thì ký tự sẽ bị xóa khỏi chuỗi. Lưu ý rằng chuỗi là bất biến trong Python, vì vậy hàm này sẽ trả về một chuỗi mới và chuỗi ban đầu sẽ không thay đổi.
s = 'abc12321cba'
print[s.replace['a', '']]
Đầu ra:
1. 8290-033010
8Python loại bỏ ký tự khỏi chuỗi bằng cách sử dụng dịch []
Chức năng Python Chuỗi dịch [] Thay thế từng ký tự trong chuỗi bằng bảng dịch đã cho. Chúng tôi phải chỉ định điểm mã Unicode cho ký tự và ‘không có cách thay thế để xóa nó khỏi chuỗi kết quả. Chúng ta có thể sử dụng hàm ord [] để có được điểm mã unicode của một ký tự.
s = 'abc12321cba'
print[s.translate[{ord['a']: None}]]
Đầu ra:
1. 8290-033010
8 Nếu bạn muốn thay thế nhiều ký tự, điều đó có thể được thực hiện dễ dàng bằng cách sử dụng trình lặp. Hãy cùng xem cách loại bỏ các ký tự ‘A,’ B, và ‘C, khỏi một chuỗi.s = 'abc12321cba'
print[s.translate[{ord[i]: None for i in 'abc'}]]
Đầu ra:
with open['c:\NDCHypen.txt', 'r'] as infile,
open['c:\NDCOnly.txt', 'w'] as outfile:
replace["-", ""]
0Loại bỏ khoảng trắng khỏi chuỗi
s = ' 1 2 3 4 '
print[s.replace[' ', '']] # 1234
print[s.translate[{ord[i]: None for i in ' '}]] # 1234
Python loại bỏ dòng mới khỏi chuỗi
s = 'ab\ncd\nef'
print[s.replace['\n', '']]
print[s.translate[{ord['\n']: None}]]
Xóa con khỏi chuỗi
Chuỗi thay thế [] đối số hàm là chuỗi. Hãy để xem cách loại bỏ một từ khỏi một chuỗi.
1. 8290-033010
0Đầu ra:
with open['c:\NDCHypen.txt', 'r'] as infile,
open['c:\NDCOnly.txt', 'w'] as outfile:
replace["-", ""]
1Xóa số lần được chỉ định
Chúng tôi cũng có thể vượt qua tham số thứ ba trong hàm thay thế [] để chỉ định số lần thay thế nên được thực hiện.
1. 8290-033010
1Đầu ra:
with open['c:\NDCHypen.txt', 'r'] as infile,
open['c:\NDCOnly.txt', 'w'] as outfile:
replace["-", ""]
2Bạn có thể kiểm tra toàn bộ tập lệnh Python và nhiều ví dụ về Python từ Kho lưu trữ GitHub của chúng tôi.