Как сопоставить только кавычки вокруг слова, в котором есть только цифры? - PullRequest
0 голосов
/ 31 августа 2018

Как мне сопоставить кавычки вокруг числа: Вот что у меня есть:

"Austria","AU","ULO1","185","34","4dera"

Вот что мне нужно:

"Austria","AU","ULO1",185,34,"4dera"

Это самое близкое, что я сделал: \"(?=\d)|(?<=\d)\", но проблема в том, что он также совпадает со словами, начинающимися с цифры, и я не могу поставить +, * или . в Look-behind или Look-forward. Я пытаюсь изменить файл .csv с 1400 строк, как это. Я могу заменить его на Notepad ++, потому что он поддерживает регулярные выражения или скрипт Python.

Ответы [ 4 ]

0 голосов
/ 31 августа 2018

в блокноте ++

поиск: \"(\d+)\" заменить на: \1

0 голосов
/ 31 августа 2018

Вы можете использовать str.isdigit()

Ex:

import csv

with open(filename, "r") as infile:
    reader = csv.reader(infile)
    for row in reader:
        print([int(i) if i.isdigit() else i for i in row])

Выход:

['Austria', 'AU', 'ULO1', 185, 34, '4dera']
0 голосов
/ 31 августа 2018
import re
s = '"Austria","AU","ULO1","185","34","4dera"'
print(re.sub(r'"(\d+)"',r'\1',s))

Соответствует каждому числу, заключенному в ", и заменяет его числом без ".

0 голосов
/ 31 августа 2018
list1 = ["Austria","AU","ULO1","185","34","4dera"]

list2 = []

for item in list1:    
    try:
        list2.append(int(item))
    except ValueError:
        list2.append(item)

должен вернуть strings для строк и int для ваших чисел в list2.

...