如何在不使用导入的情况下替换csvfile的字符串中的值?

2024-05-14 22:10:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我不允许任何类型的进口产品来回答这个问题,因此我对如何实现预期的产出感到非常困惑

所需输出:

Argentina,ARG,Feb 18 2020,0

Argentina,ARG,Feb 19 2020,0

Argentina,ARG,Feb 20 2020,0

我拥有的电流输出(需要产生此电流):

Argentina,ARG,"Feb 18, 2020",0

Feb 18 2020

Argentina,ARG,"Feb 19, 2020",0

Feb 19 2020 

Argentina,ARG,"Feb 20, 2020",0

Feb 20 2020 

Argentina,ARG,"Feb 21, 2020",0

Feb 21 2020

Argentina,ARG,"Feb 22, 2020",0

Feb 22 2020

原始CSV文件中的某些行:

Entity,Code,Date,Daily tests per thousand people (7-day smoothed) (tests per thousand)

    Argentina,ARG,"Feb 18, 2020",0
    
    Argentina,ARG,"Feb 19, 2020",0
    
    Argentina,ARG,"Feb 20, 2020",0
    
    Argentina,ARG,"Feb 21, 2020",0
    
    Argentina,ARG,"Feb 22, 2020",0
    
    Argentina,ARG,"Feb 23, 2020",0
    
    Argentina,ARG,"Feb 24, 2020",0
    
    Argentina,ARG,"Feb 25, 2020",0
    
    Argentina,ARG,"Feb 26, 2020",0
    
    Argentina,ARG,"Feb 27, 2020",0
    
    Argentina,ARG,"Feb 28, 2020",0
    
    Argentina,ARG,"Feb 29, 2020",0
    
    Argentina,ARG,"Mar 1, 2020",0
    
    Argentina,ARG,"Mar 2, 2020",0
    
    Argentina,ARG,"Mar 3, 2020",0

当前输出的当前代码:

N=5

with open(DATA) as file:

    next(file)

    for i in range(N):
        line = next(file).strip().split(",")
        print(",".join(line))
        print(line[2].replace('"',''),line[3].replace('"',''))

我不确定如何才能得出所需的输出。有什么提示吗


Tags: 类型lineargtestsmarreplacefebfile
3条回答

使用此选项:

f = open("file.csv", "r")
lines = f.readlines()
count = 0
for line in lines:
    if count != 0: #skip the header line
        x = line.split("\"")
        if len(x) == 3:
            print(x[0].lstrip() + x[1].replace(",", "") + x[2])
    count += 1

我得到以下输出:

Argentina,ARG,Feb 18 2020,0

Argentina,ARG,Feb 19 2020,0

Argentina,ARG,Feb 20 2020,0

Argentina,ARG,Feb 21 2020,0

Argentina,ARG,Feb 22 2020,0

Argentina,ARG,Feb 23 2020,0

Argentina,ARG,Feb 24 2020,0

Argentina,ARG,Feb 25 2020,0

Argentina,ARG,Feb 26 2020,0

Argentina,ARG,Feb 27 2020,0

Argentina,ARG,Feb 28 2020,0

Argentina,ARG,Feb 29 2020,0

Argentina,ARG,Mar 1 2020,0

Argentina,ARG,Mar 2 2020,0

Argentina,ARG,Mar 3 2020,0

我不知道所有的细节,但以下是我的假设:

  1. 您正在跳过头,这是文件中的第一行
  2. 虽然您的示例输出只有三行,但我假设您希望处理所有行
  3. 此外,唯一的变化似乎与引号和删除逗号有关,仅在引用的表达式中
  4. 引号总是平衡的(即,没有单独的双引号)
with open(DATA) as fd:
    header = True
    for inl in fd:
        inl = inl.rstrip()  # Remove trailing newline
        if header: # Skip first line
            header = False
            continue
        # Parse each line, part-by-part
        parts = []
        while inl:
            if inl.startswith('"'):
                part, _, inl = inl[1:].partition('",')
                if part.endswith('"'):  # In the case where line ends with "
                    part.rstrip('"')
                part = part.replace(',', '')
            else:
                part, _, inl = inl.partition(',')
            parts.append(part)
        print(','.join(parts))

很高兴回答你的问题。我已经阅读了您的问题,并建议您使用Python pandas来读取csv文件

因此,我们可以如下修改代码:

with open("test.csv") as fn:

for line in fn:
    print(line.replace("\"", ""))

希望能对您有所帮助。谢谢

相关问题 更多 >

    热门问题