Добавление двойных кавычек в строку дает мне неправильные данные в Python - PullRequest
2 голосов
/ 01 октября 2019

Я пытаюсь добавить двойные кавычки к каждой строке в файле, при выводе файла (мне нужен выходной файл .tsv) Я получаю четыре двойные кавычки вокруг строки, это дает мне правильный результат, когда я пишу это вФормат файла .csv. Код выглядит следующим образом:

import re
import pandas as pd

df = pd.read_csv('C:/Users/name/Documents/TA/sample.tsv',delimiter='\t',encoding='utf-8')

re_vin = re.compile(r'^.*\s')

vin_quotes = []

with open('C:/Users/name/Documents/TA/sample.tsv') as f:

    for line in f:
        line = line.rstrip('\n')
        line_quotes = '"{}"'.format(line)
        vin_quotes.append(line_quotes)


vin_df = pd.DataFrame(data = vin_quotes[1:])

vin_df.to_csv('C:/Users/name/Documents/TA/processed.tsv', sep='\t', encoding='utf-8',index= False)

Пример данных выглядит следующим образом

**cvdt35    Output from code**
1GADP5B """1GADP5B"""
1GADP5G """1GADP5G"""
1GAHP2G """1GAHP2G"""
1GM5K8D """1GM5K8D"""
1GM5K8H """1GM5K8H"""
1GMCU0G """1GMCU0G"""
1GMCU9G """1GMCU9G"""
1GMJK1J """1GMJK1J"""
1GTEW1E """1GTEW1E"""
2GMPK4A """2GMPK4A"""
3GA6P0H """3GA6P0H"""
3GA6P0L """3GA6P0L"""
3GA6P0L """3GA6P0L"""
3GAHP0H """3GAHP0H"""

Ожидаемый результат

"1GADP5B","1GADP5G","1GAHP2G","1GM5K8D","1GM5K8H","1GMCU0G","1GMCU9G","1GMJK1J","1GTEW1E","2GMPK4A","3GA6P0H","3GA6P0L","3GA6P0L","3GAHP0H"

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

Чтобы извлечь "word" из """ word """:

import re
data = []

# extract all words between quotes
with open('C:/Users/name/Documents/TA/sample.tsv') as f:
    text = f.read()
    data = re.findall(r'"\w+"', text)

print(data)  # ['"1GADP5B"', '"1GADP5G"', '"1GAHP2G"',...'"3GA6P0L"', '"3GAHP0H"']

with open('C:/Users/name/Documents/TA/processed.tsv', 'w', encoding='utf-8') as w_f:
    w_f.write('\t'.join(data))  # or ','.join(data)

вы хотите записать результат в procossed.tsv у вас есть список слов, который вы можете выбрать, что вы хотите в качестве разделителядля join.

0 голосов
/ 01 октября 2019

Вы можете использовать следующее, которое просто соответствует любому символу, который не " или символ пробела \s один или несколько раз, затем объединяет результат вместе.

См. Код вдействие здесь

import re

s = '1GADP5B """1GADP5B"""\n1GADP5G """1GADP5G"""\n1GAHP2G """1GAHP2G"""\n1GM5K8D """1GM5K8D"""\n1GM5K8H """1GM5K8H"""\n1GMCU0G """1GMCU0G"""\n1GMCU9G """1GMCU9G"""\n1GMJK1J """1GMJK1J"""\n1GTEW1E """1GTEW1E"""\n2GMPK4A """2GMPK4A"""\n3GA6P0H """3GA6P0H"""\n3GA6P0L """3GA6P0L"""\n3GA6P0L """3GA6P0L"""\n3GAHP0H """3GAHP0H"""'

r = re.findall(r'[^\s"]+', s)
r = ",".join(['"{0}"'.format(x) for x in r])
print(r)

Выводит следующее:

"1GADP5B","1GADP5B","1GADP5G","1GADP5G","1GAHP2G","1GAHP2G","1GM5K8D","1GM5K8D","1GM5K8H","1GM5K8H","1GMCU0G","1GMCU0G","1GMCU9G","1GMCU9G","1GMJK1J","1GMJK1J","1GTEW1E","1GTEW1E","2GMPK4A","2GMPK4A","3GA6P0H","3GA6P0H","3GA6P0L","3GA6P0L","3GA6P0L","3GA6P0L","3GAHP0H","3GAHP0H"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...