Hướng dẫn how to remove double quotes from a text file in python - cách xóa dấu ngoặc kép khỏi tệp văn bản trong python

Tôi có một số tệp văn bản như thế này, với một số 5000 dòng:

5.6  4.5  6.8  "6.5" (new line)
5.4  8.3  1.2  "9.3" (new line)

Vì vậy, thuật ngữ cuối cùng là một số giữa các trích dẫn kép.

Những gì tôi muốn làm là, sử dụng Python (nếu có thể), để gán bốn cột cho các biến gấp đôi. Nhưng vấn đề chính là thuật ngữ cuối cùng, tôi không tìm thấy cách nào để loại bỏ các trích dẫn kép vào số, liệu có thể có trong Linux không?

Đây là những gì tôi đã thử:

#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]

Hướng dẫn how to remove double quotes from a text file in python - cách xóa dấu ngoặc kép khỏi tệp văn bản trong python

SMCI

30.8K18 Huy hiệu vàng111 Huy hiệu bạc146 Huy hiệu đồng18 gold badges111 silver badges146 bronze badges

Đã hỏi ngày 10 tháng 11 năm 2009 lúc 12:20Nov 10, 2009 at 12:20

Hướng dẫn how to remove double quotes from a text file in python - cách xóa dấu ngoặc kép khỏi tệp văn bản trong python

Mở đườngOpen the way

24.9K48 Huy hiệu vàng140 Huy hiệu bạc194 Huy hiệu đồng48 gold badges140 silver badges194 bronze badges

1

for line in open(name, "r"):
    line = line.replace('"', '').strip()
    a, b, c, d = map(float, line.split())

Đây là loại xương trần và sẽ tăng các ngoại lệ nếu (ví dụ) không có bốn giá trị trên dòng, v.v.

Đã trả lời ngày 10 tháng 11 năm 2009 lúc 12:23Nov 10, 2009 at 12:23

Ned Batchelderned BatchelderNed Batchelder

353K71 Huy hiệu vàng553 Huy hiệu bạc650 Huy hiệu Đồng71 gold badges553 silver badges650 bronze badges

6

Có một mô -đun bạn có thể sử dụng từ thư viện tiêu chuẩn có tên

#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]
4:
#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]
4
:

>>> import shlex
>>> print shlex.split('5.6  4.5  6.8  "6.5"')
['5.6', '4.5', '6.8', '6.5']

Đã trả lời ngày 10 tháng 11 năm 2009 lúc 12:31Nov 10, 2009 at 12:31

Mô -đun

#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]
5 (Thư viện tiêu chuẩn) tự động, mặc dù các tài liệu không cụ thể về
#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]
6

>>> import csv

>>> with open(name, 'rb') as f:
...     for row in csv.reader(f, delimiter=' ', skipinitialspace=True):
...             print '|'.join(row)

5.6|4.5|6.8|6.5
5.4|8.3|1.2|9.3

Đã trả lời ngày 22 tháng 10 năm 2012 lúc 14:25Oct 22, 2012 at 14:25

Antony Hatchkinsantony HatchkinsAntony Hatchkins

30K9 Huy hiệu vàng106 Huy hiệu bạc108 Huy hiệu đồng9 gold badges106 silver badges108 bronze badges

for line in open(fname):
    line = line.split()
    line[-1] = line[-1].strip('"\n')
    floats = [float(i) for i in line]

Một tùy chọn khác là sử dụng mô-đun tích hợp, được dành cho nhiệm vụ này. cụ thể là

#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]
5:intended for this task. namely
#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]
5:

>>> import csv
>>> for line in csv.reader(open(fname), delimiter=' '):
    print([float(i) for i in line])

[5.6, 4.5, 6.8, 6.5]
[5.6, 4.5, 6.8, 6.5]

Đã trả lời ngày 10 tháng 11 năm 2009 lúc 12:24Nov 10, 2009 at 12:24

SilentghostsilentghostSilentGhost

296K64 Huy hiệu vàng302 Huy hiệu bạc291 Huy hiệu Đồng64 gold badges302 silver badges291 bronze badges

1

Hoặc bạn có thể chỉ cần thay thế dòng của mình

l = re.split("\s+",string.strip(line)).replace('\"','')

Với cái này:

l = re.split('[\s"]+',string.strip(line))

Đã trả lời ngày 10 tháng 11 năm 2009 lúc 12:28Nov 10, 2009 at 12:28

yu_shayu_shayu_sha

4.17022 Huy hiệu bạc19 Huy hiệu đồng22 silver badges19 bronze badges

0

Tôi đã sử dụng về bản chất để loại bỏ "trong" 25 "bằng cách sử dụng

Code:
        result = result.strip("\"") #remove double quotes characters 

Đã trả lời ngày 21 tháng 1 năm 2016 lúc 23:50Jan 21, 2016 at 23:50

Masud Syedmasud SyedMasud Syed

1032 Huy hiệu bạc6 Huy hiệu đồng2 silver badges6 bronze badges

Tôi nghĩ rằng điều dễ dàng và hiệu quả nhất để làm là cắt nó!

Từ mã của bạn:

#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]
0

Vì vậy, bạn chỉ cần thêm một tuyên bố khác:

#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]
1

Bây giờ nó sẽ trả về 6.5 mà không cần trích dẫn kép dẫn đầu và kết thúc.

Viola! :)

Hướng dẫn how to remove double quotes from a text file in python - cách xóa dấu ngoặc kép khỏi tệp văn bản trong python

Gsamara

70.4K41 Huy hiệu vàng182 Huy hiệu bạc287 Huy hiệu đồng41 gold badges182 silver badges287 bronze badges

Đã trả lời ngày 16 tháng 10 năm 2012 lúc 23:10Oct 16, 2012 at 23:10

A.R.BA.R.BA.R.B

711 Huy hiệu bạc9 Huy hiệu đồng1 silver badge9 bronze badges

1

Bạn có thể sử dụng regexp, thử một cái gì đó như thế này

#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]
2

Điều này sẽ cung cấp cho bạn một danh sách tất cả các số trong tệp của bạn dưới dạng chuỗi mà không có bất kỳ trích dẫn nào.

Đã trả lời ngày 10 tháng 11 năm 2009 lúc 12:27Nov 10, 2009 at 12:27

SergesergeSerge

7.6285 Huy hiệu vàng39 Huy hiệu bạc45 Huy hiệu Đồng5 gold badges39 silver badges45 bronze badges

IMHO, Vũ nữ thoát y Doublequote phổ quát nhất là:

#!/usr/bin/python

import os,sys,re,string,array

name=sys.argv[1]
infile = open(name,"r")

cont = 0
while 1:
         line = infile.readline()
         if not line: break
         l = re.split("\s+",string.strip(line)).replace('\"','')
     cont = cont +1
     a = l[0]
     b = l[1]
     c = l[2]
     d = l[3]
3

Đã trả lời ngày 12 tháng 6 năm 2015 lúc 7:45Jun 12, 2015 at 7:45

Làm thế nào để bạn xóa trích dẫn từ một chuỗi trong Python?

Trong định dạng đầu ra, chúng tôi yêu cầu xóa trích dẫn khỏi chuỗi Python. Hãy đến, hãy tranh luận về một vài phương pháp mà chúng ta có thể xóa trích dẫn khỏi chuỗi Python. Để xóa các trích dẫn (Hồi giáo) khỏi chuỗi Python, chỉ cần sử dụng lệnh forport () hoặc bạn có thể loại bỏ nó nếu các trích dẫn dường như ở cuối chuỗi.use the replace() command or you can eliminate it if the quotes seem at string ends.

Làm thế nào để bạn xóa trích dẫn kép?

Sử dụng phương thức String.Repaceall () để xóa tất cả các trích dẫn kép khỏi chuỗi, ví dụ:str.Thay thế ('"', ''). Phương thức thay thế () sẽ trả về một chuỗi mới với tất cả các trích dẫn kép được xóa. replaceAll() method to remove all double quotes from a string, e.g. str. replaceAll('"', '') . The replace() method will return a new string with all double quotes removed.

Làm thế nào để bạn in một chuỗi mà không có dấu ngoặc kép trong Python?

Để in một danh sách chuỗi không có trích dẫn, hãy sử dụng biểu thức '[' + ','.use the expression '[' + ', '. join(lst) + ']' to create a single string representation of the list without the quotes around the individual strings.

Làm thế nào để bạn xóa trích dẫn từ một bản in trong Python?

Nếu bạn muốn xóa các trích dẫn kèm theo khỏi một chuỗi trước khi in nó, bạn có thể gọi phương thức String.Strip () và chuyển các ký tự trích dẫn đơn và đôi để bị tước từ đầu và cuối của đối tượng chuỗi mà nó được gọi là.Ví dụ, biểu thức '"Hello World"'.call the string. strip() method and pass the single and double quotes characters to be stripped from the beginning and end of the string object on which it is called. For example, the expression '"hello world"'.