Tôi đang tìm kiếm để có được dòng cuối cùng được sản xuất từ biến
-122.1058
-123.1050
-125.10584323
1bash-4.1$ cat file1_dup.py
#!/usr/bin/python
with open["file1.txt"] as f:
lines = f.readlines[]
for line in lines:
if "!" in line:
line = line.split[][-1].strip[]
print line
đầu ra tôi nhận được như sau ..
-122.1058
-123.1050
-125.10584323
Kết quả tôi muốn được in ra là
-122.1058
-123.1050
-125.10584323
2Hơn nữa, tôi đã nhận được gợi ý từ một số Goghling và nhận được đầu ra mong muốn nhưng điều đó có vẻ hơi phức tạp với tôi tại điểm ..
bash-4.1$ cat file2_dup.py
#!/usr/bin/python
def file_read_from_tail[fname,n]:
with open[fname] as f:
f=f.read[].splitlines[]
lines=[x for x in f]
for i in range[len[lines]-n,len[lines]]:
line = lines[i].split[][-1]
#line = line.split[][-1]
print line
file_read_from_tail['file1.txt',1]
Yeilds teh mong muốn như folows ..
bash-4.1$ ./file2_dup.py
-125.10584323
Tái bút: Tôi chỉ mượn câu hỏi vì lợi ích của Into Into từ: Cách đọc một dòng cụ thể và in một vị trí cụ thể trong dòng này bằng Python
Đã hỏi ngày 13 tháng 11 năm 2017 lúc 10:34Nov 13, 2017 at 10:34
krock1516krock1516krock1516
4197 Huy hiệu bạc 30 Huy hiệu Đồng7 silver badges30 bronze badges
Bạn có thể kiểm tra xem dòng mới có nhỏ hơn như cái trước như thế này không
#!/usr/bin/python
res_line = 0
with open["file1.txt"] as f:
lines = f.readlines[]
for line in lines:
if "!" in line:
line = float[line.split[][-1].strip[]]
if res_line > line:
res_line = line
print res_line
Đã trả lời ngày 13 tháng 11 năm 2017 lúc 10:38Nov 13, 2017 at 10:38
Thomas Schwärzlthomas SchwärzlThomas Schwärzl
9.1616 Huy hiệu vàng42 Huy hiệu bạc67 Huy hiệu Đồng6 gold badges42 silver badges67 bronze badges
5
Edit:
Bạn có thể sử dụng
-122.1058
-123.1050
-125.10584323
3 để lấy các dòng được lập chỉ mục trong một vòng lặp:with open["file1.txt", "rt"] as f:
lines = f.readlines[]
for line, content in enumerate[lines]:
# apply your logic to line and/or content here
# by adding ifs to select the lines you want...
print line, content.strip[] # do your thing
sẽ xuất ra [chỉ để minh họa vì tôi không chỉ định bất kỳ điều kiện nào trong mã ở trên]:
0 -122.1058
1 -123.1050
2 -125.10584323
3
hoặc thay thế, chọn dòng cụ thể của bạn với một điều kiện trong ListComp bằng cách sử dụng mã này thay thế:
with open["file1.txt", "rt"] as f:
lines = f.readlines[]
result = [ content.strip[] for line, content in enumerate[lines]
if line == len[lines] - 2] # creates a list with
# only the last line
print result[0]
Điều đó sẽ xuất hiện:
-125.10584323
Đã trả lời ngày 13 tháng 11 năm 2017 lúc 11:30Nov 13, 2017 at 11:30
progmaticoprogmaticoprogmatico
4.3541 Huy hiệu vàng14 Huy hiệu bạc25 Huy hiệu đồng1 gold badge14 silver badges25 bronze badges
1
Hãy thử những điều sau:
print [line.split[][-1].strip[] for line in lines if '!' in line][-1]
Đã trả lời ngày 13 tháng 11 năm 2017 lúc 10:40Nov 13, 2017 at 10:40
O.SuleimanO.SuleimanO.Suleiman
8581 Huy hiệu vàng5 Huy hiệu bạc11 Huy hiệu đồng1 gold badge5 silver badges11 bronze badges
3
Tôi thấy một cách tốt hơn bằng cách tạo một danh sách trống và nối thêm giá trị đến từ điều kiện và sau đó chọn chỉ mục bạn chọn và liệt kê đầu ra, điều này tốt theo nghĩa là nó có thể được sử dụng cho bất kỳ dòng nào của bạn mà bạn yêu cầu để chọn.
Giả sử tôi wana dòng thứ hai cuối cùng sau đó có thể đặt lại giá trị trong phần in
-122.1058
-123.1050
-125.10584323
4, sẽ in chỉ mục cuối cùng của dòng thứ hai ..-122.1058
-123.1050
-125.10584323
0Đã trả lời ngày 13 tháng 11 năm 2017 lúc 13:38Nov 13, 2017 at 13:38
krock1516krock1516krock1516
4197 Huy hiệu bạc 30 Huy hiệu Đồng7 silver badges30 bronze badges